JavaScript中重构含嵌套数组的对象数组是否可行?
为嵌套products对象添加外层name属性的实现方案
当然可行!这在JavaScript里是很常见的对象数组转换需求,咱们用数组的map()方法就能轻松搞定。
具体实现代码
// 你的原始对象数组 const originalData = [ {name: 'Alex', products: [{type: 1, code: 1213}, {type: 2, code: 2312}]}, {name: 'Alex', products: [{type: 1, code: 1213}, {type: 2, code: 2312}]} ]; // 执行转换逻辑 const transformedData = originalData.map(user => { return { ...user, // 保留外层对象的所有原有属性 products: user.products.map(product => { // 把外层的name属性合并到每个product对象里 return { name: user.name, ...product }; }) }; }); // 验证结果 console.log(transformedData);
代码逻辑说明
- 外层
map():遍历原始数组里的每一个用户对象,对每个对象做转换处理。 ...user:用扩展运算符保留外层对象的所有原有属性(这里就是name和products,不过我们会重新生成products数组)。- 内层
map():针对当前用户的products数组,逐个处理每个产品对象,将外层的name属性和产品自身的属性合并,生成新的产品对象。 - 最终得到的
transformedData就是你想要的结构,每个嵌套的产品对象都包含了外层的name属性。
如果喜欢更简洁的写法,还可以用箭头函数的简写形式:
const transformedData = originalData.map(user => ({ ...user, products: user.products.map(product => ({ name: user.name, ...product })) }));
内容的提问来源于stack exchange,提问作者RamAlx
相关产品推荐
相关产品推荐

