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

JavaScript如何将对象数组转换为按字段聚合的映射结构

实现对象数组到字段聚合映射的方法

基础实现(forEach遍历)

核心逻辑是遍历数组中的每个对象,逐个收集所有字段的对应值存入结果:

const arr = [
  { name:"test",
    class:3
  },
  { name:"test2",
    class:4
  },
  { name:"test3",
    class:5
  },
]

const map = {}
arr.forEach(item => {
  // 遍历当前对象的所有属性键
  Object.keys(item).forEach(key => {
    // 结果对象无该键则先初始化空数组
    if (!map[key]) map[key] = []
    // 推入当前属性值
    map[key].push(item[key])
  })
})

console.log(map) // 输出符合要求的结构

简化实现(reduce累积)

用数组reduce方法直接累积结果,代码更简洁:

const map = arr.reduce((acc, cur) => {
  Object.keys(cur).forEach(key => {
    acc[key] = acc[key] || []
    acc[key].push(cur[key])
  })
  return acc
}, {})

注意事项

  • 如果原数组内的对象存在缺写字段的情况,对应字段的数组会跳过缺写的项,如需补占位值可在push前加判断逻辑。
  • 该实现支持任意数量的对象字段,无需提前指定字段名,适配动态字段的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 21:42:00