如何合并数组中每个对象嵌套的details子数组,得到所有value对象集合
正确实现方案
你现有代码存在两个问题:
- 仅使用
map转换只会得到包含两个details子数组的二维数组,无法直接合并为一维数组 - 错误使用对象展开语法
{...data.details},会将数组转为键为索引的对象,不符合预期结构
方案1(最简写法,ES2019+支持)
使用flatMap方法,该方法会先执行map转换,再自动扁平化一层数组,刚好匹配需求:
const final = datas.flatMap(item => item.details)
方案2(兼容低版本运行环境)
使用reduce累加合并所有details数组:
const final = datas.reduce((result, current) => result.concat(current.details), [])
方案3(map+flat组合写法)
先通过map提取所有details数组,再调用flat扁平化:
const final = datas.map(item => item.details).flat()
以上三种写法都可以得到你要的预期输出。
内容的提问来源于stack exchange,提问作者Joseph
相关产品推荐
相关产品推荐

