如何从对象数组中提取指定ID的重复数据
实现方法
首先修正原数组的语法错误(对象间缺少逗号),正确的数组定义如下:
const originalArr = [ {id: 1, name:'jeff'}, {id:1, name:'kent'}, {id:2, name:'ynez'}, {id:2, name:'cloe'}, {id:3, name:'Ron'}, {id:3, name:'chester'} ];
方法一:使用Array.filter()
这是最简洁的实现方式,直接筛选出所有id等于1的对象:
const duplicate = originalArr.filter(item => item.id === 1); console.log(duplicate); // 输出:[{id:1, name:'jeff'}, {id:1, name:'kent'}]
方法二:使用forEach遍历收集
如果需要手动控制遍历过程,可通过forEach逐个检查并收集目标对象:
const duplicate = []; originalArr.forEach(item => { if (item.id === 1) { duplicate.push(item); } }); console.log(duplicate); // 输出结果同上
扩展:先判断重复再提取(适配更复杂场景)
如果需要先确认目标id存在重复,再提取对应项(本例中所有id均有重复),可先统计id出现次数再筛选:
// 第一步:统计每个id的出现次数 const idCount = {}; originalArr.forEach(item => { idCount[item.id] = (idCount[item.id] || 0) + 1; }); // 第二步:筛选id为1且出现次数大于1的项 const duplicate = originalArr.filter(item => item.id === 1 && idCount[item.id] > 1); console.log(duplicate); // 输出结果同上
内容的提问来源于stack exchange,提问作者Kent C. Placia
相关产品推荐
相关产品推荐

