Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Как правильно заполнить массив данными? (https://javascript.ru/forum/dom-window/76838-kak-pravilno-zapolnit-massiv-dannymi.html)

gsdev99 19.02.2019 18:34

Как правильно заполнить массив данными?
 
Здравствуйте. Подскажите, пожалуйста, как правильно решить следующую задачу. У меня есть данные.
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: '-'}]
];

рони 19.02.2019 19:29

gsdev99,
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'}]
];
const length = arr.reduce((l,{length})=>Math.max(l,length),0);
const arrNew = arr.map(a => Array.from({ length }, (v, k) => a[k] ? {...a[k]} : {id: ++k, value: '-'}));

console.log(arrNew)

gsdev99 20.02.2019 17:20

Большое спасибо.


Часовой пояс GMT +3, время: 04:26.