@s24344

Как уравнять длины вложенных массивов?

Есть массив:

const players = [
  {
    holes: [
      { holeId: 1, score: 5 },
      { holeId: 2, score: 5 },
      { holeId: 3, score: 5 },
      { holeId: 4, score: 5 }
    ],
    firstName: "firstName 1",
    lastName: "lastName 1"
  },
  {
    holes: [
      { holeId: 1, score: 5 },
      { holeId: 2, score: 5 }
    ],
    firstName: "firstName 2",
    lastName: "lastName 2"
  },
  {
    holes: [
      { holeId: 1, score: 5}
    ],
    firstName: "firstName 3",
    lastName: "lastName 3"
  }
];

Необходимо сделать так, чтобы вложенные массивы holes стали одинаковой длины. Если длина какого-то массива меньше максимальной, то надо добавить объекты вида { score: '-' }.
  • Вопрос задан
  • 91 просмотр
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Сначала вычисляем максимальный размер вложенных массивов:

const length = Math.max(...players.map(n => n.holes.length));

Дальше можно дополнить существующие массивы:

for (const { holes } of players) {
  holes.push(...Array.from(
    { length: length - holes.length },
    () => ({ score: '-' })
  ));
}

Или собрать новые:

const newPlayers = players.map(n => ({
  ...n,
  holes: Array.from({ length }, (_, i) => n.holes[i] || { score: '-' }),
}));
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
24 нояб. 2024, в 03:11
500 руб./за проект
24 нояб. 2024, в 01:35
5000 руб./за проект
24 нояб. 2024, в 01:24
500 руб./за проект