从对象数组中删除重复对象的最佳方法是什么?
来自
var arr =
[
{"name":"Joe", "age":17},
{"name":"Bob", "age":17},
{"name":"Carl", "age": 35},
{"name":"Bob", "age":35},
{"name":"Joe", "age":17},
]
当删除重复项时,预期结果是
res= arr =
[
{"name":"Joe", "age":17},
{"name":"Bob", "age":17},
{"name":"Carl", "age": 35},
{"name":"Bob", "age":35},
]
(5 个对象,1 个重复,剩下 4 个)。
每个对象的属性个数是固定的,每个数组的属性名都是一样的。然而,从一个数组到另一个数组,它们可能不仅仅是上面的“name”和“age”,而是属性的名称可以是任何。
@Pointy 请将上述问题中的重复词视为口头意义上的“重复”——分别具有相同数量的属性、相同属性和相同属性值的对象。
最佳答案
您可以使用对象进行查找,无论是否已插入对象。
编辑:
更新以获取对象的所有属性并使用键的值。如果只有一些属性应该用于它,那么我建议使用带有相关键的数组,比如
['name', 'age']
并与它一起使用
var key = ['name', 'age'].map(function (k) { return a[k]; }).join('|');
var arr = [{ "name": "Joe", "age": 17 }, { "name": "Bob", "age": 17 }, { "name": "Carl", "age": 35 }, { "name": "Bob", "age": 35 }, { "name": "Joe", "age": 17 }],
filtered = arr.filter(function (a) {
var key = Object.keys(a).map(function (k) { return a[k]; }).join('|');
if (!this[key]) {
return this[key] = true;
}
}, Object.create(null));
console.log(filtered);
关于javascript - 如何从 JavaScript 数组中删除重复的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37459904/