返回重复的对象及其在javascript中的位置

时间:2016-09-23 14:31:11

标签: javascript

我在javascript数组中有很多对象。我需要找到所有具有相同名称的重复对象。

e.g。

values = [
    { name: 'Name1', index:0 },
    { name: 'Name2', index:1 },
    { name: 'Name1', index:2 },
    { name: 'Name2', index:3 },
    { name: 'Name1', index:4 },
]

我期望的是一个有两个对象的数组

values = [
    { name: 'Name1', index:2 },
    { name: 'Name2', index:3 },
    { name: 'Name1', index:4 }
]

因为这些是重复的。

2 个答案:

答案 0 :(得分:0)

ES6的新增内容非常有趣,例如Set类。此代码不会修改您的初始对象,但它很容易适应。

function unique(values) {
  const knownNames = new Set();
  const result = [];

  for (const value of values) {
    if (!knownNames.has(value.name)) {
      knownNames.add(value.name);
      result.push(value);
    }
  }

  return result;
}

答案 1 :(得分:0)

这可能不是最有效的方法,如果你不需要担心IE9,你应该使用Set

export default