js中的对象数组:删除重复项

Array of objects in js: remove duplicates

本文关键字:删除 数组 对象 js      更新时间:2023-09-26

我有一个包含许多对象的数组:

[{"firstName":"an","lastName":"something","linkedInID":"..."},{"firstName":"stefanie","lastName":"doe","linkedInID":"..."},{"firstName":"john","lastName":"something","linkedInID":null},{"firstName":"timmy","lastName":"test","linkedInID":null},{"firstName":"john","lastName":"something","linkedInID":null}, ... ]

可能存在重复项,我希望将其删除。

这个答案让我明白了我可以删除基于姓氏的重复:

var arr = {};
for ( var i=0, len=attendees_in_one_array.length; i < len; i++ )
    arr[attendees_in_one_array[i]['lastName']] = attendees_in_one_array[i];
attendees_in_one_array = new Array();
for ( var key in arr )
    attendees_in_one_array.push(arr[key]);

我只想在firstName、lastName和linkedInID完全相同的情况下删除一个人。

我尝试过将arr[attendees_in_one_array[i]['lastName']] = attendees_in_one_array[i];更改为arr[attendees_in_one_array[i]['lastName'] && attendees_in_one_array[i]['firstName'] && attendees_in_one_array[i]['linkedInID']] = attendees_in_one_array[i];,但没有成功。

有谁能帮我吗?

您可以通过3个值的组合形成唯一密钥

firstName + lastName + linkedInID

像这样:

var arr = [{"firstName":"an","lastName":"something","linkedInID":"..."},{"firstName":"stefanie","lastName":"doe","linkedInID":"..."},{"firstName":"john","lastName":"something","linkedInID":null},{"firstName":"timmy","lastName":"test","linkedInID":null},{"firstName":"john","lastName":"something","linkedInID":null} ]
var ulist = {}, uarr =[];
arr.forEach(function(k) { ulist[k.firstName + k.lastName + k.linkedInID] = k; });
for(var i in ulist) uarr.push(ulist[i]);
// uarr contains your desired result