如何基于对象的数组在JavaScript中克隆对象

问题描述 投票:-2回答:2

说我有一个这样的对象数组:

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次)。

javascript arrays
2个回答
1
投票

使用.reduce().reduce()组合如下:

我希望这会有所帮助!


1
投票

您可以使用.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);

对于多个道具(请确保每个道具都具有至少一个类型和颜色)

© www.soinside.com 2019 - 2024. All rights reserved.