javascript - js中的对象数组: remove duplicates

标签 javascript arrays

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

[{"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}, ... ]

可能存在重复项,我希望删除它们。

This答案让我明白了,我可以根据姓氏删除重复项:

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]);

我只想在名字、姓氏和 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]['f​​irstName'] && 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 

关于javascript - js中的对象数组: remove duplicates,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34566658/

相关文章:

javascript - 使用 JavaScript 导入 Node 模块

javascript - 如何禁用 CKEditor 4.x 拼写检查器

javascript - Lodash - 选择不在数组中的元素

Java - 如何根据多个属性删除 ArrayList 中的重复项

javascript - 返回 $.getJSON 函数的结果

javascript - .subscribe() 函数有什么作用?

java - 从 Firestore 数据库检索 GeoPoint 数组添加 map 多边形

javascript - 在 JSP 中运行 pdftk

javascript - 如何将 2 个带有对象的数组重组为嵌套数组?

c - 为结构中的二维数组赋值是段错误