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

如何过滤数组中category与sub_category相同的重复对象?

过滤数组中category和sub_category均重复的对象

下面提供几种JavaScript实现方案,按需选择:

方案一:利用Set结合字符串标识

通过将每个对象的category和sub_category拼接成唯一字符串,用Set记录已出现过的标识,遍历数组时只保留未重复的对象:

const originalArray = [
  { category: 'ELECTRONICS', sub_category: 'CONSOLE' },
  { category: 'ELECTRONICS', sub_category: 'CONSOLE' },
  { category: 'ELECTRONICS', sub_category: 'TV' }
];

const seen = new Set();
const uniqueArray = originalArray.filter(item => {
  const key = `${item.category}-${item.sub_category}`;
  if (!seen.has(key)) {
    seen.add(key);
    return true;
  }
  return false;
});

console.log(uniqueArray);
// 输出:[{ category: 'ELECTRONICS', sub_category: 'CONSOLE' }, { category: 'ELECTRONICS', sub_category: 'TV' }]

方案二:使用reduce方法构建唯一映射

用reduce创建一个以拼接字符串为键的对象,自动覆盖重复项,最后提取对象的值得到去重数组:

const originalArray = [
  { category: 'ELECTRONICS', sub_category: 'CONSOLE' },
  { category: 'ELECTRONICS', sub_category: 'CONSOLE' },
  { category: 'ELECTRONICS', sub_category: 'TV' }
];

const uniqueArray = Object.values(
  originalArray.reduce((acc, item) => {
    const key = `${item.category}-${item.sub_category}`;
    acc[key] = item; // 重复项会被最后一个出现的覆盖
    return acc;
  }, {})
);

console.log(uniqueArray);
// 输出结果同上

说明

  • 两种方案核心都是通过唯一标识字符串判断重复,若后续需要增加判断字段,只需修改拼接的key即可
  • 如果需要保留第一个出现的重复项,两种方案都适用;若要保留最后一个,方案二更直接

内容的提问来源于stack exchange,提问作者reacter777

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 08:47:05