说我有一个这样的对象数组:
let cars = [
{
"name": "Ford",
"color": ["Blue", "Red"]
},
{
"name": "Toyota",
"color": ["Blue"]
}
]
[如何不使用for循环而将数组变平(也许是flatMap?),所以我的数组如下所示:
let cars = [
{
"name": "Ford",
"color": "Blue"
},
{
"name": "Ford",
"color": "Red"
},
{
"name": "Toyota",
"color": "Blue"
}
]
不想循环通过的原因是我的数组很大,并且我希望像这样“爆炸”对象中有多个数组(所以我最终要遍历该数组5次)。
您可以使用.forEach()
const cars = [{ "name": "Ford", "colors": ["Blue", "Red"] }, { "name": "Toyota", "colors": ["Blue"] }];
const result = cars.reduce((a, c) => {
c.colors.forEach(e => {
a.push({ name: c.name, colors: e });
});
return a;
}, []);
console.log(result);
对于多个道具(请确保每个道具都具有至少一个类型和颜色)