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

JavaScript如何按相同标识字段将数组合并为指定格式的对象数组

实现方案

你可以先通过临时对象按n字段做分组聚合,再转换为数组即可,具体代码如下:

let array = [
  { text: "Green marbles", number: 10, n: 1 },
  { text: "Pink marbles", number: 5, n: 1 },
  { text: "Yellow marbles", number: 2, n: 1 },
  { text: "Green marbles", number: 10, n: 2 },
  { text: "Pink marbles", number: 5, n: 2 },
  { text: "Yellow marbles", number: 2, n: 2 }
]

// 用临时对象做分组映射,key为n的值
const groupMap = {}
array.forEach(item => {
  const nVal = item.n
  // 不存在对应分组时初始化
  if (!groupMap[nVal]) {
    groupMap[nVal] = { n: nVal }
  }
  // 写入text对应的number值
  groupMap[nVal][item.text] = item.number
})

// 把映射对象的值转为数组就是目标结果
const formatArray = Object.values(groupMap)

如果实际场景中同一个n下可能存在相同text的条目,需要累加number的话,可以把赋值的行改成:

groupMap[nVal][item.text] = (groupMap[nVal][item.text] || 0) + item.number

你原来的嵌套遍历对象键的思路是不必要的,不需要遍历每个元素的所有属性,直接提取所需的n、text、number三个字段做聚合即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 14:09:03