【问题标题】:Javascript Array formatting - New Generate as a sub array base on the keyJavascript 数组格式 - 新生成为基于键的子数组
【发布时间】:2023-01-10 10:35:39
【问题描述】:

现有的 javascript 数组如下所示

var cars = [
  { make: 'audi', model: 'r8', year: '2012' },
  { make: 'audi', model: 'rs5', year: '2013' },
  { make: 'ford', model: 'mustang', year: '2012' },
  { make: 'ford', model: 'fusion', year: '2015' },
  { make: 'kia', model: 'optima', year: '2012' },
];

console.log(cars);

需要使用 javascript 方法按照以下方式格式化数组,新数组应该如下所示


var newCarsArr = [
  {
    make: 'audi',
    selected: [
      { make: 'audi', model: 'r8', year: '2012' },
      { make: 'audi', model: 'rs5', year: '2013' },
    ],
  },
  {
    make: 'ford',
    selected: [
      { make: 'ford', model: 'mustang', year: '2012' },
      { make: 'ford', model: 'fusion', year: '2015' },
    ],
  },
  {
    make: 'kia',
    selected: [{ make: 'kia', model: 'optima', year: '2012' }],
  },
];

console.log(newCarsArr);

【问题讨论】:

  • 只需使用Array.reduce() 即可

标签: javascript formatting


【解决方案1】:

尝试这样的事情:

const newCarsArr = cars.reduce((acc, car) => {
  const make = car.make;
  const existingMake = acc.find(a => a.make === make);
  if (existingMake) {
    existingMake.selected.push(car);
  } else {
    acc.push({ make, selected: [car] });
  }
  return acc;
}, []);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-26
    • 1970-01-01
    • 1970-01-01
    • 2020-09-11
    相关资源
    最近更新 更多