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

如何过滤对象数组并基于指定属性获取去重结果

更简洁的实现方案

你原有代码需要两次遍历数组,可通过以下两种方式简化:

方案1:单次reduce实现(性能最优)

仅遍历一次数组,同时完成过滤、去重逻辑,最终结果和你的原有实现完全一致:

// 原始数组建议单独命名,避免和结果变量混淆
const data = [{
    "Class": "Class C",
    "Group": "Group A",
    "Value": 1
  },
  {
    "Class": "Class C",
    "Group": "Group A",
    "Value": 2
  },
  {
    "Class": "Class A",
    "Group": "Group B",
    "Value": 2
  },
  {
    "Class": "Class C",
    "Group": "Group B",
    "Value": 10
  }
];

const result = [...data.reduce((map, { Class, Group, Value }) => {
  Class.includes('Class C') && map.set(Group, { Class, Group, Value });
  return map;
}, new Map()).values()];

console.log(result);

如果需要保留同Group下第一个出现的项,仅需修改set逻辑:

if (Class.includes('Class C') && !map.has(Group)) {
  map.set(Group, { Class, Group, Value })
}

方案2:链式调用实现(可读性更高)

逻辑分层更清晰,适合小数据量场景:

const result = [...new Map(
  data.filter(item => item.Class.includes('Class C'))
      .map(item => [item.Group, item])
).values()];

两种方案的结果都和你现有实现完全一致,可根据场景选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 11:15:00