如何使用reduce和剩余运算符将数组转换为指定结构的对象
你现有实现的问题在于直接将完整的原对象赋值给了对应key的属性值,因此会保留name字段,不符合要求。
最优实现方案
利用对象解构+剩余运算符提取排除name之外的属性即可:
const output = data.reduce((acc, { name, ...rest }) => { acc[name] = rest; return acc; }, {});
代码说明
- 遍历每个数组元素时,先通过对象解构把
name字段单独拆分出来,剩余的job、address等属性通过剩余运算符...rest整合为一个不含name的新对象 - 直接修改累加器
acc赋值再返回,相比每次展开累加器生成新对象的写法性能更高,尤其适合处理大数组的场景。
如果你需要和示例输出一致、统一所有属性值为固定的{job: "software", address: "GGN"},可以直接写死值:
const output = data.reduce((acc, { name }) => { acc[name] = { job: "software", address: "GGN" }; return acc; }, {});
内容的提问来源于stack exchange,提问作者rupesh sharma
相关产品推荐
相关产品推荐

