javascript - 在数组中查找重复对象的有效方法

标签 javascript arrays angular typescript unique

我正在使用 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.filternew Set 但无法达到预期的结果。

我想知道是否有一种有效的方法来做到这一点。

最佳答案

您可以通过以下代码删除重复项。

var obj = {};

for ( var i=0, len=response.length; i < len; i++ )
    obj[response[i]['id']] = response[i]; // if id Duplicate otherwise use value if the check on value.

response = new Array();
for ( var key in obj )
    response.push(obj[key]);

console.log(response); // listData 

编辑:

如果你想对你的 Prop 进行全面检查,那么你可以选择这个

function removeDuplicates(myArr, prop) {
    return myArr.filter((obj, pos, arr) => {
        return arr.map(mapObj => mapObj[prop]).indexOf(obj[prop]) === pos;
    });
}


console.log(removeDuplicates(response,['id','value'])); // for id or value use only 'id' or 'value' in second parameter.

关于javascript - 在数组中查找重复对象的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48073700/

相关文章:

c++ - 2 昏暗数组和双指针

javascript - 如何向现有对象添加元素

javascript - Angular 2 动态引导应用程序组件

Angular 2,将 id 传递给组件

angular - 如果值是字符串而不是 int 或 float,如何告诉 angular (2) 货币管道按原样显示

javascript - 访问节点的最快方式

javascript - 防止 JavaScript 定时器重新进入

javascript - Spring Maven Angjular JS 问题

javascript - 使用 Typescript 在 JSON 中搜索字符串

java - Java中使用foreach对整数数组进行排序