如何使用JavaScript查找对象数组中的重复Item值?
如何在JavaScript数组中找出重复的Item值?
给定如下数组:
let items = [ {"Item":"1","OfficeID":"82388","Title":"Bamboozled"}, {"Item":"2","OfficeID":"82392","Title":"Malarkey"}, {"Item":"3","OfficeID":"65747","Title":"Flabbergasted"}, {"Item":"4","OfficeID":"82390","Title":"Cattywampus"}, {"Item":"5","OfficeID":"77091","Title":"Lollygag"}, {"Item":"6","OfficeID":"81726","Title":"Kerfuffle"}, {"Item":"7","OfficeID":"82155","Title":"Brouhaha"}, {"Item":"8","OfficeID":"82265","Title":"Skedaddle"}, {"Item":"8","OfficeID":"82394","Title":"Nincompoop"}, {"Item":"10","OfficeID":"82395","Title":"Tomfoolery"} ]
数组中存在重复的Item值(值为8),需要找出所有重复的Item值,如何用JavaScript实现?求示例代码。
补充:个人解决方案
以下是我整理的解决方案,分享给有同类需求的开发者参考:
const array = [ {"Agenda":"1","OfficeID":"82388","Title":"Bamboozled"}, {"Agenda":"2","OfficeID":"82392","Title":"Malarkey"}, {"Agenda":"3","OfficeID":"65747","Title":"Flabbergasted"}, {"Agenda":"4","OfficeID":"82390","Title":"Cattywampus"}, {"Agenda":"5","OfficeID":"77091","Title":"Lollygag"}, {"Agenda":"6","OfficeID":"81726","Title":"Kerfuffle"}, {"Agenda":"7","OfficeID":"82155","Title":"Brouhaha"}, {"Agenda":"8","OfficeID":"82265","Title":"Skedaddle"}, {"Agenda":"8","OfficeID":"82394","Title":"Nincompoop"}, {"Agenda":"10","OfficeID":"82395","Title":"Tomfoolery"} ]; const result = []; let prevName = null; let count = 0; array.forEach(item => { if (item.Agenda === prevName) { count++; } else { if (count > 1) { for (let i = 0; i < count; i++) { result.push(prevName); } } prevName = item.Agenda; count = 1; } }); console.log('result:', result);
通用解决方案(不依赖数组排序)
上述方案依赖数组中重复项连续排列,若数组无序则会失效。下面提供一种不依赖排序的通用实现,通过Map统计元素出现次数来筛选重复项:
const findDuplicateItems = (arr, key) => { const countMap = new Map(); // 统计指定key的出现次数 arr.forEach(item => { const value = item[key]; countMap.set(value, (countMap.get(value) || 0) + 1); }); // 筛选出出现次数>1的key值 const duplicateKeys = [...countMap.keys()].filter(k => countMap.get(k) > 1); // 筛选出所有重复的元素对象 const duplicateItems = arr.filter(item => countMap.get(item[key]) > 1); return { duplicateKeys, duplicateItems }; }; // 使用示例 const items = [ {"Item":"1","OfficeID":"82388","Title":"Bamboozled"}, {"Item":"2","OfficeID":"82392","Title":"Malarkey"}, {"Item":"3","OfficeID":"65747","Title":"Flabbergasted"}, {"Item":"4","OfficeID":"82390","Title":"Cattywampus"}, {"Item":"5","OfficeID":"77091","Title":"Lollygag"}, {"Item":"6","OfficeID":"81726","Title":"Kerfuffle"}, {"Item":"7","OfficeID":"82155","Title":"Brouhaha"}, {"Item":"8","OfficeID":"82265","Title":"Skedaddle"}, {"Item":"8","OfficeID":"82394","Title":"Nincompoop"}, {"Item":"10","OfficeID":"82395","Title":"Tomfoolery"} ]; const { duplicateKeys, duplicateItems } = findDuplicateItems(items, 'Item'); console.log('重复的Item值:', duplicateKeys); // 输出: ["8"] console.log('所有重复的元素:', duplicateItems);
该方法可灵活指定要检查的键名(如你的方案中的Agenda),适用性更强。
内容的提问来源于stack exchange,提问作者erasmo carlos
相关产品推荐
相关产品推荐

