如何使用map方法遍历数组提取每个对象的sub_data属性?
解决方案
直接调用数组的map方法,在遍历回调中返回当前对象的sub_data属性即可得到目标结果。
首先修正你提供的原始代码中的语法问题:两个title属性的行尾缺失逗号,修正后可正常运行的原始数据如下:
const data = [ { id: 1, title: 'Logo', sub_data: [ { id: 2, title: 'Company Logo' }, { id: 3, title: 'Website Logo' }, ] }, { id: 2, title: 'Brands', sub_data: [ { id: 25, title: 'Company Brands' }, { id: 3, title: 'Website Brands' }, ] } ]
按原数组顺序获取每组sub_data
map会返回和原数组长度一致的新数组,新数组的每一项对应原数组同位置对象的sub_data内容,代码如下:
const subDataList = data.map(item => item.sub_data)
返回结果和你的预期完全匹配:
subDataList[0]为第一组Logo对应的sub_data:
[ { id: 2, title: 'Company Logo' }, { id: 3, title: 'Website Logo' }, ]
subDataList[1]为第二组Brands对应的sub_data:
[ { id: 25, title: 'Company Brands' }, { id: 3, title: 'Website Brands' }, ]
(可选)合并所有sub_data为一维数组
如果你不需要保留分组,想把所有sub_data里的对象合并到同一个数组,可以在map后调用flat方法打平嵌套数组:
const mergedSubData = data.map(item => item.sub_data).flat()
内容的提问来源于stack exchange,提问作者Derek Hough
相关产品推荐
相关产品推荐

