javascript - 消除数组 Javascript/AngularJS 中的重复项

标签 javascript arrays angularjs

场景1

我调用的 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

在我的分页中,我会调用一组新的数组

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

然后我执行一个 foreach 循环,将其推送到 array2。

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

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

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

期望的结果:

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

最佳答案

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

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

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

其中 array1 是源数组,id 是比较所有对象所依据的属性。

关于javascript - 消除数组 Javascript/AngularJS 中的重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32418191/

相关文章:

javascript - 在需要时内联加载 jQuery/CSS 还是始终通过外部加载?

java - 在Android中创建随机对应数组

java - Locale.getLanguage() 等于 String

javascript - 我如何从这个起始数组创建这个数组?

AngularJS - 在正确的范围内评估指令的选项

javascript - 在 AngularJS 中显示加载栏时禁用控件

javascript - Reactjs @setState 具有动态键值

javascript - Delphi Chromium,Javascript 按钮按下

javascript - 超过 React-Redux 最大调用堆栈大小

c - 查找某个元素在 c 中重复了多少次