【发布时间】:2021-11-03 02:23:50
【问题描述】:
我正在尝试删除 javascript 数组中所有重复对象的实例。下面的辅助函数适用于删除重复项并保留 1 个实例,但我想通过删除所有实例来基本上取消与另一个对象具有相同属性的任何对象的资格。
function removeDuplicates(data, key) {
return [
... new Map(
data.map(x => [key(x), x])
).values()
]
}
未清理数组示例:
[
{
name: 'name1',
value: 15
},
{
name: 'name2',
value: 16
},
{
name: 'name3',
value: 17
},
{
name: 'name1',
value: 18
}
]
从上面的辅助函数返回:
[
{
name: 'name1',
value: 15
},
{
name: 'name2',
value: 16
},
{
name: 'name3',
value: 17
}
]
我想要退回的东西:
[
{
name: 'name2',
value: 16
},
{
name: 'name3',
value: 17
}
]
将不胜感激任何想法!
【问题讨论】:
-
如果两个
values 相同怎么办?它只是name键吗?您可以使用代码here 但反转条件并将id更改为name以匹配您的密钥,即values.filter(e => !lookup[e.name])?
标签: javascript arrays object duplicates