You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 10:13:10