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

如何为数组对象添加嵌套属性并将部分属性移入其中

问题:重组数组对象结构

原始数组:

[
{
   stt:1,
   code: 24,
   name: 'n',
   age: 27,
   address: 'somewhere',
},
{
   stt:2,
   code: 82,
   name: 'jo',
   age: 23,
   address: 'tree',
},
{
   stt:3,
   code: 2,
   name: 'con',
   age: 23,
   address: 'somewhere',
},
]

期望结果数组:

[
{
   stt:1,
   code: 24,
   name: 'n',
   employee: {
     age: 27,
     address: 'somewhere',
  }
},
{
   stt:2,
   code: 82,
   name: 'jo',
   employee: {
     age: 23,
     address: 'tree',
   }
},
{
   stt:3,
   code: 2,
   name: 'con',
   employee: {
     age: 23,
     address: 'somewhere',
   }
},
]

提问者尝试获取对象的前3个属性,但不清楚后续操作,想请教如何为对象添加新元素并将部分属性放入该新元素中。


解决方案

你可以用数组的map()方法遍历原数组,结合对象解构赋值来拆分属性并重组结构,有两种实现方式:

方式一:明确解构属性

const originalArray = [
  { stt:1, code: 24, name: 'n', age: 27, address: 'somewhere' },
  { stt:2, code: 82, name: 'jo', age: 23, address: 'tree' },
  { stt:3, code: 2, name: 'con', age: 23, address: 'somewhere' },
];

const resultArray = originalArray.map(item => {
  // 提取需要保留在顶层的属性,以及要放入employee的属性
  const { stt, code, name, age, address } = item;
  // 重组为目标结构
  return {
    stt,
    code,
    name,
    employee: {
      age,
      address
    }
  };
});

方式二:用剩余操作符简化写法

如果不想逐个列出顶层属性,可用剩余操作符提取剩余属性,代码更简洁:

const resultArray = originalArray.map(({ age, address, ...rest }) => ({
  ...rest, // 展开stt、code、name这些顶层属性
  employee: { age, address } // 把age和address放入新的employee对象
}));

核心逻辑说明

  • map()方法会遍历原数组的每个元素,返回全新的数组,不会修改原数组。
  • 对象解构赋值可以快速拆分每个对象的属性,区分出要保留在顶层的部分和要嵌套的部分。
  • 最后通过对象字面量重组,生成符合需求的结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 01:05:28