如何从嵌套对象数组中提取所有arrObj子元素组成一维数组
错误原因
你的代码存在两个问题:
- 未给
reduce传入初始空数组[]作为第二个参数,首次执行时previousValue是dataArr的第一个元素对象,第一次拼接返回普通数组后,第二次执行时previousValue不存在arrObj属性,调用会直接报错 - 累加值本身就是存储结果的数组,不需要读取它的
arrObj属性
正确实现
方法1:reduce 实现
const newArr = dataArr.reduce((previousValue, currentValue) => { return previousValue.concat(currentValue.arrObj) }, [])
方法2:flatMap 实现(ES2019+ 更简洁)
flatMap会先对每个元素执行映射,再自动拍平1层数组,刚好匹配需求:
const newArr = dataArr.flatMap(item => item.arrObj)
内容的提问来源于stack exchange,提问作者Uzair Khan
相关产品推荐
相关产品推荐

