【发布时间】:2018-06-12 21:51:18
【问题描述】:
我正在使用 angular4。我需要显示一个具有唯一值的列表。
访问 API 时,我得到一个数组,从该数组中我只需要显示唯一的数据。我将在特定时间间隔访问该 api,并且仅在存在新数据时才需要更新列表。
response= [{"id":"0DRDCH03DR51GGJGJNP80F7XZ8","value":"36af1784bec4_566601260"},{"id":"0DRDCFYGM2CAHAXYK96BPT9RHV","value":"36af1784bec4_566601140"},...]
listData = [];
for(let data of response) {
let tempValue = {id: '', time: ''};
let value = data.value.split('_')
if (value.length==2) {
if(value[value.length-1].length==2) {
tempValue.id = value[0];
tempValue.time = value[1];
}
let isPresent = false;
if(this.listData.length>0){
for(let value of this.listData){
if(value.time===tempValue.time){
isPresent = true;
}
}
}
if(!isPresent) {
this.listData.push(tempValue);
}
}
}
最终的列表数据
listData = [{id:'36af1784bec4', time: '566601140'},...]
上面的函数确实给了我一个独特的listData 数组。我尝试使用array.filter 和new Set,但无法达到预期的效果。
我想知道是否有有效的方法来做到这一点。
【问题讨论】:
-
如果您对新数据的定义是新的
id和value,那么无论如何查找现有数据可能比更新列表成本更高。 -
您可以将数组转换为Set
-
@bigless 我尝试转换为
Set并尝试使用.has,但即使listData为空,它也总是返回true -
@gurvinder372 我得到的响应有
id和value,但新的listData是value.split('_')和value[0] is id和value[1] is time。listData = [{id: '36af1784bec4', time: '566601260'},...] -
@Tony Roczz 是的,我很天真。它可能基于相同的参考...
标签: javascript arrays angular typescript unique