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

如何使用JavaScript将对象数组转换为按办公地点分组的键值对象

JavaScript对象数组转位置键值对解决方案

实现思路

  • 先基于已知的Locations常量初始化结果对象,确保所有指定位置都作为键存在(无对应数据时默认是空数组)
  • 使用reduce方法遍历输入数组,将每个元素归入对应officeLocation的数组中

完整实现代码

// 已知常量
const Locations = ["locOne","locTwo"]
// 输入数组
const inputArr = [
  {
    "userId": "234d5aa0",
    "officeLocation": "locOne",
  },
  {
    "userId": "234d5aa0",
    "officeLocation": "locOne",
  },
  {
    "userId": "fecac9a9ecb8",
    "officeLocation": "locTwo",
  }
]

// 转换逻辑
const result = inputArr.reduce((acc, item) => {
  // 仅处理在Locations中定义的位置,过滤脏数据
  if (acc.hasOwnProperty(item.officeLocation)) {
    acc[item.officeLocation].push(item)
  }
  return acc
// 初始化累加器,预填充所有位置为空白数组
}, Locations.reduce((initAcc, loc) => ({...initAcc, [loc]: []}), {}))

console.log(result)

补充说明

你示例中locOne数组第一个userId为234d5a属于笔误,上述代码会保留原始数据的userId值,如果需要对userId做截断处理,在push前添加对应逻辑即可:

// 示例:userId截断前6位
acc[item.officeLocation].push({...item, userId: item.userId.slice(0,6)})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 23:57:02