Задать вопрос
@alex_kulkoff

Как из массива извлечь данные по месяцам, добавив заглушки для отсутствующих месяцев?

Есть массив такого вида:

[{
  month: 2,
  sum: 10
}, {
  month: 3,
  sum: 20
},{
  month: 4,
  sum: 26
}, {
  month: 5,
  sum: 30
}, {
  month: 7,
  sum: 22
}, {
  month: 8,
  sum: 25
},]

Надо получить массив из 12 значений, чтобы индекс был равен номеру месяца:

['', '10 ', '20', '26', '30', '', '22', '25', '', '', '', '']
  • Вопрос задан
  • 109 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 2
0xD34F
@0xD34F Куратор тега JavaScript
const newArr = arr.reduce((acc, n) => (
  acc[n.month - 1] = n.sum,
  acc
), Array(12).fill(''));

или

const newArr = Array.from({ length: 12 }, function(_, i) {
  return this[-~i] || '';
}, Object.fromEntries(arr.map(n => [ n.month, n.sum ])));

или

const newArr = [];
for (let i = 0, j = 0; i < 12; i++) {
  newArr.push((arr[j] || {}).month === i + 1 ? arr[j++].sum : '');
}
Ответ написан
Комментировать
hzzzzl
@hzzzzl
// data = массив такого вида
Array(12).fill().map((item, index) => {
	const month = data.find(m => m.month === index + 1)
	return month ? month.sum : ''
})


ну или как-то по старинке

// data = массив такого вида
result = Array(12).fill('')

for(let i = 0; i < data.length; i++) {
	result[data[i].month - 1] = data[i].sum
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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