如何将API响应中嵌套company对象的属性提取到主对象层级
高效实现方案
有性能最优、写法简洁的实现方式,两种常见场景的写法如下:
不修改原数组/原对象(无副作用,推荐绝大多数场景使用)
利用ES6解构赋值和展开运算符,时间复杂度为O(n),n为数组长度,不会改动API返回的原始数据,避免影响后续逻辑:
// rawData 为API返回的原始对象数组 const processedData = rawData.map(({ company, ...rest }) => ({ ...rest, ...company }))
直接修改原数组(性能更高,适合数据量极大的场景)
如果允许修改原始返回结果,可以直接遍历修改,省去生成新数组和新对象的开销:
rawData.forEach(item => { // 将company属性全部合并到主对象 Object.assign(item, item.company) // 移除原嵌套的company字段 delete item.company })
注意事项
如果外层主对象和嵌套的company对象存在重名属性,上述默认写法会优先保留company内的属性值。如果需要外层主对象属性优先级更高,调整展开顺序即可,比如第一种写法调整为:
const processedData = rawData.map(({ company, ...rest }) => ({ ...company, ...rest }))
内容的提问来源于stack exchange,提问作者Youssef Khedher
相关产品推荐
相关产品推荐

