如何删除JavaScript数组中所有存在属性重复的对象实例
JavaScript数组删除所有指定属性重复的对象实现方案
实现思路
- 首次遍历数组统计每个指定属性值的出现次数
- 二次遍历过滤掉所有出现次数大于1的元素即可
代码实现
function removeAllDuplicates(data, key) { const occurrenceCount = new Map(); // 统计每个key值的出现次数 data.forEach(item => { const currentKey = key(item); occurrenceCount.set(currentKey, (occurrenceCount.get(currentKey) || 0) + 1); }); // 仅保留只出现一次的元素 return data.filter(item => occurrenceCount.get(key(item)) === 1); }
使用示例
针对你给出的测试数组,调用方式和原有函数完全一致:
const testArr = [ { name: 'name1', value: 15 }, { name: 'name2', value: 16 }, { name: 'name3', value: 17 }, { name: 'name1', value: 18 } ]; // 按name属性去重,删除所有重复属性对应的实例 const result = removeAllDuplicates(testArr, item => item.name);
运行后result的值和你预期的结果完全一致。
该方案时间复杂度为O(n),仅遍历两次数组,大数据量场景下也能保持良好性能。
内容的提问来源于stack exchange,提问作者Greg
相关产品推荐
相关产品推荐

