JavaScript 对象数组 : Removing objects with duplicate properties

标签 javascript arrays

我有一个对象数组:

[
  { id: 1, name: "Bob" },
  { id: 1, name: "Donald" },
  { id: 2, name: "Daryl" }
]

我想去掉具有重复 ID 的对象,留下一个如下所示的数组:

[
  { id: 1, name: "Bob" },
  { id: 2, name: "Daryl" }
]

我不关心剩下哪些对象,只要每个 ID 都是唯一的即可。也许 Underscore 中的任何东西都可以做到这一点?

编辑:这与下面列出的副本不同;我不是要过滤重复的对象,而是要过滤包含相同 ID 的对象。我已经使用 Underscore 完成了这项工作 - 我会很快发布答案。

最佳答案

您可以使用 reducesome在这里效果很好:

var out = arr.reduce(function (p, c) {

  // if the next object's id is not found in the output array
  // push the object into the output array
  if (!p.some(function (el) { return el.id === c.id; })) p.push(c);
  return p;
}, []);

DEMO

关于JavaScript 对象数组 : Removing objects with duplicate properties,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32634736/

相关文章:

javascript - 如何使用 jsdoc 记录 knockout.js View 模型?

c - 如何访问按值传递给函数的结构数组中的成员?

javascript - 切换关闭时 jquery div 不显示

javascript - 我如何在 redux-saga 的回调中使用 yield?

HTML5 getImageData 的 javascript 内存泄漏

javascript - 使用一些逻辑在表中显示 Json 结果

javascript - JSON 和 Javascript 数组之间的 "Interactions"(和语法)

arrays - 零大小数组的分配和在数组构造函数中的使用

java - 使用多线程对图像应用中值

Javascript 数组给出 NaN