如何用一行代码解决嵌套map生成的多层数组冗余问题?
解决方案
你的问题出在默认的.flat()仅会拉平一层嵌套数组,而你的代码生成的是三层嵌套结构,所以需要指定拉平深度或者改用更适配的flatMap方法。以下是两种一行代码的解决方式:
方式1:指定flat的拉平深度
let tags = product.map(item => item.outSourceItem.map(outsourceitem => outsourceitem.tags)).flat(2);
因为你的数组是三层嵌套,传入深度参数2就能直接拉平为单层数组。如果不确定嵌套深度,也可以用flat(Infinity)来处理任意层级的嵌套。
方式2:使用嵌套flatMap(更高效)
flatMap等价于map后立即执行flat(1),嵌套使用可以在映射的同时完成拉平,避免先创建完整的三层嵌套数组:
let tags = product.flatMap(item => item.outSourceItem.flatMap(outsourceitem => outsourceitem.tags));
内容的提问来源于stack exchange,提问作者Stacks Queue
相关产品推荐
相关产品推荐

