JavaScript如何删除对象数组中value字段仅出现一次的所有元素
实现方案
你可以分两步完成,先全局统计所有value的出现频次,再过滤数组,完全避开循环过程中动态修改原数组的问题:
步骤1:统计value出现频次
用reduce遍历一次数组,记录每个value总共出现多少次:
const valueCount = data.reduce((countMap, item) => { countMap[item.value] = (countMap[item.value] || 0) + 1 return countMap }, {})
步骤2:过滤数组
只要保留出现次数≥2的元素即可:
const result = data.filter(item => valueCount[item.value] >= 2)
按你描述的需求,上面的代码执行后会保留所有value重复出现的元素,你给出的期望结果里缺失了{"id": 8, "value": "d"}属于笔误,如果你确实需要额外过滤该元素,可以调整filter里的判断条件。
内容的提问来源于stack exchange,提问作者Harald
相关产品推荐
相关产品推荐

