如何优化多级嵌套数组中提取含子项Level2对象的代码
优化递归层级数组的Level 2对象提取代码
问题说明
我有一个递归至Level 3的对象数组(示例如下),需要提取其中包含子项的Level 2对象。现有代码已实现功能,但写法不够优雅,希望进行优化。
示例数据
const mainArr = [{ children: [{ children: [{ children: [{ children: [{}], level: 3 }], level: 2 }], level: 1 }], level: 0 }]
现有实现代码
reasons = [ ...[...data.map((level0) => level0.children)] .flat() .map((level1) => level1.children) .flat(), ].filter((level2) => level2.children.length);
优化后的代码
利用flatMap替代map+flat的组合简化嵌套结构,同时添加可选链操作符增强代码健壮性:
const reasons = data .flatMap(level0 => level0.children) .flatMap(level1 => level1.children) .filter(level2 => level2.children?.length);
优化点说明
flatMap同时完成映射与扁平化操作,相比多次map+flat的组合更简洁高效- 使用
?.可选链操作符,避免因level2.children不存在导致的报错问题
期望输出结果
[ { "children": [ { "name": "Reason", "level": 3 } ], "level": 2 }, { "children": [ { "name": "Reason2", "level": 3 } ], "level": 2 } ]
内容的提问来源于stack exchange,提问作者Berkay Doğukan Urhan
相关产品推荐
相关产品推荐

