如何为数组对象添加嵌套属性并将部分属性移入其中
问题:重组数组对象结构
原始数组:
[ { 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
相关产品推荐
相关产品推荐

