Ionic 2 - 如何将大型JSON数据放入变量中并删除重复项而不会延迟?



我有一个包含超过40K(40000(行的JSON文件。

我用这段代码来获取 json 的数据,并将接收到的数据放在变量中:

this.http.get(url).map(res => res.json()).subscribe(data => {
...
this.users=data.users;
...
this.images=data.images;
this.removeDupicates();
...
});

我的问题:当加载JSON的数据并尝试将数据放入变量中并尝试删除重复项时,应用程序需要很长时间才能准备就绪。

那么有没有解决方案可以加快这个过程或修复它?

编辑:

这是函数"removeDuplicates"的代码

removeDupicates(){
for(let i=0; i<this.images.length; i++){
for(let j=0; j<this.images.length; j++){
if(this.images[i].img == this.images[j].img && i!=j){
this.images.splice(i,1);
}
}
}
}

因此,如在此答案中找到并根据您的情况进行了修改:

Array.from(new Set(
[
{"img":"1"},
{"img":"2"},
{"img":"1"},
{"img":"3"}
].map((itemInArray) => itemInArray.img)));

更多关于 Array.from & Set

输出将["1,"2","3"]

现在,如果您希望异步发生这种情况,从而不必等待数据加载后再继续使用应用程序,则可以将其包装在setTimeout

所以:

removeDuplicates() {
setTimeout(() => {
this.images = Array.from(new Set(
this.images.map(image => image.img)
));
}, 0); // execute timeout function immediately, fakes async
}

请注意,您不会有类似 :[{img: 'myimage'}, ....]的列表,但您现在有一个列表['myimage', 'mysecondimage', ...]

相关内容

  • 没有找到相关文章

最新更新