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

如何将对象数组转换为键对应数组值的对象,求reduce优化实现方案

对象数组转聚合对象的reduce优化实现方案

你当前的实现存在两个可优化点:

  • 额外声明了外部的reduced_object变量,产生不必要的副作用,也没有用到reduce本身的累加器特性
  • 最终返回的是对象,但命名为reduced_array存在语义歧义

优化后代码

const companies=[
    {name:'Company One',email:'trishabh885@gmail.com',phone:'8860138213', category:'Finance',start:1981,end:2003,date:'21-06-2009'},
    {name:'X Name',email:'grfgr@gmail.com',phone:'8860138213', category:'Finance',start:1981,end:2003,date:'21-06-2009'},
    {name:'A one',email:'grfgt@yahoo.com',phone:'943548213', category:'Lecture',start:1981,end:2003,date:'21-06-2009'},
    {name:' Name',email:'gtrgt@gmail.com',phone:'9656013653', category:'Finance',start:1981,end:2003},
    {name:'Company Name',email:'grgtrgg@gmail.com', category:'Finance',start:1981,end:2003,date:'21-06-2009'},
    {name:'sdksdjd',email:'bfbrg@gbmail.com',phone:'7485788475898548', category:'Sciennce',start:1981,end:2003,date:'21-06-2009'},
    {name:'kdjfkf',email:'gfggfb@gmail.com',phone:'0959898860138213', category:'Finance',start:1981,end:2003,date:'21-06-2009'},
    {name:'vdjf',email:'g5rgf@gmail.com',phone:'050498860138213', category:'Finance',start:1981,end:2003,date:'21-06-2009'},
    {name:'vdjvk',email:'trishabh885@gmail.com',phone:'958958860138213', category:'Finance',start:1981,end:2003,date:'21-06-2009'},
    {name:'vdkv',email:'trishabh885@gmail.com',phone:'5434886013821543543', category:'Finance',start:1981,end:2003,date:'21-06-2009'},
    {name:'zeeshan',email:'trishabh885@gmail.com',phone:'8864535213', category:'Finance',start:1981,end:2003,date:'21-06-2009'}
]

const reducedObject = companies.reduce((acc, current) => {
  Object.entries(current).forEach(([key, value]) => {
    // 有对应键就追加值,没有就初始化数组
    acc[key] ? acc[key].push(value) : acc[key] = [value]
  })
  return acc
}, {}) // 直接把空对象作为reduce的初始累加器,无需额外外部变量

console.log(reducedObject)

优化说明

  • 消除了外部变量依赖,不会污染外部作用域,逻辑更纯粹可复用
  • 用数组解构简化键值对读取,代码更简洁易读
  • 变量命名符合语义,避免歧义
  • 时间复杂度和原实现完全一致,没有额外性能损耗,输出结果和原实现完全对齐

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 12:06:03