@s24344

Как правильно заполнить массив данными?

Здравствуйте. Подскажите, пожалуйста, как правильно решить следующую задачу. У меня есть данные.
const arr = [
  [{id: 1, value: 'item 1'}, {id: 2, value: 'item 2'}, {id: 3, value: 'item 3'}, {id: 4, value: 'item 4'}],
  [{id: 1, value: 'item 1'}, {id: 2, value: 'item 2'}],
  [],
  [{id: 1, value: 'item 1'}, {id: 2, value: 'item 2'}, {id: 3, value: 'item 3'}]
];

Мне необходимо получить следующую структуру. Т.е. заполнить массивы данными длинной по самому большому, свойство value: '-' записать указанным символом.
const arrM = [
  [{id: 1, value: 'item 1'}, {id: 2, value: 'item 3'}, {id: 3, value: 'item 3'}, {id: 4, value: 'item 4'}],
  [{id: 1, value: 'item 1'}, {id: 2, value: 'item 2'}, {id: 3, value: '-'}, {id: 4, value: '-'}],
  [{id: 1, value: '-'}, {id: 2, value: '-'}, {id: 3, value: '-'}, {id: 4, value: '-'}],
  [{id: 1, value: 'item 1'}, {id: 2, value: 'item 3'}, {id: 3, value: 'item 3'}, {id: 4, value: '-'}]
];
  • Вопрос задан
  • 69 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Вычисляем максимальную длину вложенных массивов:

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

Дополняем существующие массивы:

for (const n of arr) {
  const id = 1 + Math.max(0, ...n.map(m => m.id));
  n.push(...Array.from(
    { length: length - n.length },
    (_, i) => ({ id: id + i, value: '_' })
  ));
}

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

const newArr = arr.map(n => Array.from({ length }, (_, i) => ({
  id: i + 1,
  value: i < n.length ? n[i].value : '-',
})));
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы