如何在JavaScript中重构现有数组?对象数组重构问题求助
嘿,这个问题我刚好碰到过!咱们来捋一捋为什么会出现嵌套数组,以及怎么解决~
问题原因分析
你用.map()的时候,返回的是每个外层对象里的categories数组,所以原来的外层数组里的每个元素都变成了一个数组,自然就得到了[[{...}]]这种嵌套结构啦。
几种解决方案
根据你的需求,这里有几个实用的方法:
方法1:用flatMap()一步到位
flatMap()相当于先执行map(),再对结果执行一次flat(1)(展开一层数组),刚好能解决嵌套问题。不管你的categories数组里有1个还是多个元素,它都会把所有元素合并到外层数组里:
let data = [ { "categories" : [ { "products" : [ { "name" : "Product 1" } ], "id" : 1369 } ] } ]; const transformedData = data.flatMap(item => item.categories); console.log(transformedData); // 输出:[ { "products": [ { "name": "Product 1" } ], "id": 1369 } ]
方法2:直接取categories的第一个元素(如果确定只有一个元素)
如果你能保证每个外层对象的categories数组里永远只有一个元素,那直接在map()里取categories[0]就够了,简单直接:
const transformedData = data.map(item => item.categories[0]);
方法3:先map()再flat()展开
如果你更习惯分开操作,也可以先通过map()拿到嵌套数组,再用flat(1)展开一层:
const transformedData = data.map(item => item.categories).flat(1);
这样就能得到你想要的结构啦~
内容的提问来源于stack exchange,提问作者neverrmind
相关产品推荐
相关产品推荐

