如何使用JavaScript将嵌套对象数组合并为单一层级的对象数组
嵌套数组扁平化实现方案
核心需求
将二层嵌套的数组合并为一维对象数组,要求不通过索引访问子数组元素,最终得到结果:[{id:'11223', price:92},{id:'92221', price:90}]
最优实现方案
方案1:使用Array.flat()(现代JS环境推荐)
flat()是ES2019新增的数组原生方法,默认扁平化1层嵌套结构,全程不需要操作数组索引,代码最简洁直观:
// 待处理的嵌套数组 let nestedArray = [ [ { id:'11223', price:92 } ], [ { id:'92221', price:90 } ] ] // 直接调用flat()得到目标结果 const finalResult = nestedArray.flat() console.log(finalResult) // 输出 [{id:'11223', price:92},{id:'92221', price:90}]
如果后续嵌套层级加深,只需给flat()传入对应深度参数即可,比如需要扁平化所有层级传入flat(Infinity)。
方案2:兼容旧环境实现
如果需要兼容不支持flat()的低版本运行环境,可以用reduce搭配concat实现,同样不需要操作索引:
const finalResult = nestedArray.reduce((acc, curr) => acc.concat(curr), [])
结果求和验证
你提供的求和逻辑可以直接使用:
let sum = finalResult.reduce((acc, curr)=> { return acc+ curr.price }, 0) console.log(sum) // 输出182
内容的提问来源于stack exchange,提问作者Nightcrawler
相关产品推荐
相关产品推荐

