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

如何从对象数组中筛选出每个name对应power值最高的唯一一项?

实现对象数组按指定字段分组取最大值的方案

你可以通过临时映射对象的方式实现需求,不需要反复查询正在构建的结果数组,逻辑简单易读:

实现代码

const items = [
  {name: "john", power: 1},
  {name: "john", power: 129391},
  {name: "john", power: 91},
  {name: "philip", power: 33},
  {name: "philip", power: 883},
  {name: "philip", power: 3112333},
];

// 用普通对象做临时存储,key为name,value为当前name对应power最大的条目
const tempMap = {}
for (const item of items) {
  // 同name下如果是首次存入,或者当前条目power更大,就替换缓存内容
  if (!tempMap[item.name] || item.power > tempMap[item.name].power) {
    tempMap[item.name] = item
  }
}

// 把缓存对象的值转为数组就是最终结果
const result = Object.values(tempMap)

你也可以用reduce方法实现更简洁的写法,逻辑和上面完全一致:

const result = Object.values(
  items.reduce((acc, item) => {
    if (!acc[item.name] || item.power > acc[item.name].power) acc[item.name] = item
    return acc
  }, {})
)

输出结果

[
  { name: 'john', power: 129391 },
  { name: 'philip', power: 3112333 }
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 12:21:01