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

如何使用JavaScript修改数组中嵌套对象的键名

修改嵌套数组内对象键名的最优实现方案

核心思路

对内层嵌套的Organization数组做二次遍历处理,全程采用不可变更新的方式,既不修改原始数据,也能完全保留原有数据的结构和属性顺序。

实现代码

基础版本(仅修改内层team键为teamName,外层属性保持不变)

const newArray = myArray.map(item => {
  return {
    // 保留外层所有原有属性
    ...item,
    // 遍历处理内层Organization数组
    Organization: item.Organization.map(orgItem => {
      // 只对包含team属性的对象做键名替换
      if ('team' in orgItem) {
        const { team, ...rest } = orgItem
        return {
          teamName: team,
          ...rest
        }
      }
      // 无team属性的对象直接返回,不做修改
      return orgItem
    })
  }
})

扩展版本(同时修改外层id为userId + 内层team为teamName)

如果需要同时修改外层键名,可以用以下写法:

const newArray = myArray.map(item => {
  // 拆分外层需要修改的id和其余属性
  const { id, ...outerRest } = item
  return {
    userId: id,
    ...outerRest,
    Organization: item.Organization.map(orgItem => {
      if ('team' in orgItem) {
        const { team, ...rest } = orgItem
        return {
          teamName: team,
          ...rest
        }
      }
      return orgItem
    })
  }
})

方案优势

  • 无副作用:全程基于扩展运算符生成新对象,不会修改原始数据
  • 结构完全一致:所有原有属性的顺序、数组元素的顺序都和原数据保持一致
  • 原生实现:无第三方依赖,代码逻辑清晰易读,性能满足绝大多数业务场景
  • 容错性高:对Organization数组中没有team属性的对象无影响,不会破坏原有数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 16:06:03