我在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 }
]
因为这些是重复的。
答案 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