【发布时间】:2021-12-04 00:48:26
【问题描述】:
我有一个对象数组,其中大多数属性可能彼此重复,但一个值可能不同:
const originalArray = [
{ id: 1, name: 'x', 'description': 'x', url: 'y' },
{ id: 2, name: 'x', 'description': 'x', url: 'z' }
]
我想根据名称的差异对这个数组进行重复数据删除,但将 URL 差异作为一个数组保留在重复数据删除数组中:
const dedupedArray = [
{ id: 1, name: 'x', 'description': 'x', url: ['y','z'] },
]
function removeDuplicatesByProperty(keyFn, array) {
const mySet = new Set();
return array.filter(function (x) {
const key = keyFn(x),
isNew = !mySet.has(key);
if (isNew) mySet.add(key);
return isNew;
});
}
const dedupedArray = removeDuplicatesByProperty((x) => x.name, originalArray);
【问题讨论】:
-
所以
ids 可以不同,你不在乎你保留哪个? -
这能回答你的问题吗? Group array items using object
标签: javascript arrays merge set