2016-01-02 53 views
1

我有一些对象的数组:数组中的JS对象:删除重复

[{"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]['firstName'] && attendees_in_one_array[i]['linkedInID']] = attendees_in_one_array[i];,但没有奏效。

任何人都可以帮助我?

+0

不是'linedInID's独特之处?我会认为他们会。如果是这样,为什么不使用这些?如果不是,您接受的答案可以删除不应删除的项目。 –

+0

并非每个用户都有LinkedIn ID,所以我无法删除重复的LinkedIn ID。你说接受的答案可以删除不应删除的项目。你能举个例子吗? – binoculars

+0

带两位没有LinkedInID的用户。假设第一个用户是firstName:“foo”,lastName:“bar”,第二个用户是firstName:“fo”,lastName:“obar”。在这两种情况下,“firstName + lastName”将是'foobar',所以第二个将被删除。 –

回答

1

可以形成从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