2015-09-05 37 views
0

场景1消除阵列中的重复项Javascript/AngularJS

我调用的API返回具有重复项的数组。

var array1 = [{id:1, foo:23},{id:1, foo:24},{id:1, foo:22},{id:2, foo:26},{id:3, foo:26}]; //example 

问题1 - >我怎么消除重复获得期望的结果:

var array2 = [{id:1, foo:23 },{id:2, foo:26},{id:3, foo:26}]; 

方案2

在我的分页我会打电话一套新的array

var array1 = [{id:2, foo:27},{id:2, foo:28},{id:3, foo:29},{id:4, foo:28},{id:5, foo:23}]; //example 

然后我做了一个fo到达循环,将其推到array2。

var array2 = [{id:1, foo:23},{id:2, foo:27},{id:3, foo:27}]; 

angular.forEach(array1, function(a){ 
       array2.push(a)       
     }); 

问题2 - >如何防止array1中存在的array1中的对象被推送。

期望的结果:

var array2 = [{id:1, foo:23},{id:2, foo:27},{id:3, foo:27},{id:4, foo:28},{id:5, foo:23}] 
+0

看看Lodash https://lodash.com/ –

+0

你的问题应该是关于解决你写的问题,而不是要求为你写代码。 – RobG

回答

1

我建议Lodash库(https://lodash.com),它简化生活了很多。

如果你愿意使用Lodash它有uniq函数(https://lodash.com/docs#uniq)。

var myUniqObjectArray = _.uniq(array1, 'id'); 

array1是源阵列,id是基于属性上的所有对象进行比较。

+0

我有另一个不一致的字段,所以我必须以id为基础。我编辑了我的代码,请检查一下,谢谢 – teddybear123

+0

我不确定我是否理解。即使在更改样本时,建议的解决方案也会返回预期结果。因此,''_.uniq(array1,'id');''会给出结果''[{id:1,foo:23},{id:2,foo:26},{id:3,foo :26}];''(array2)。也许我弄错了,新的基础数据和预期的结果是有序的。 – tiblu