Я пытаюсь превратить мой массив объектов в новый массив объектов, основываясь на их общем ключе объекта и суммируя все остальные свойства каждого объекта.Но я не знаю, почему я продолжаю получать массив с правильным номером элемента, но повторяющимися элементами (с последним новым объектом).вот код:
function(){
const list = [
{
amount: 0,
date: '2018-11-29',
source: 'a'
}
{
amount: 2,
date: '2018-11-29',
source: 'b'
}
{
amount: 3,
date: '2018-11-30',
source: 'b'
}
]
const daysGroup = []
let dayGroup = {
date: list[0].date,
a: '',
b: ''
}
for (let i = 0; i < list.length; i++) {
if(dayGroup.date === list[i].date){
switch (list[i].source) {
case 'a':
dayGroup.a += Number(list[i].amount)
break;
case 'b':
dayGroup.b += Number(list[i].amount)
break;
default:
break;
}
console.log(dayGroup)
} else{
console.log(dayGroup)
daysGroup.unshift(dayGroup)
dayGroup.date = list[i].date
switch (list[i].source) {
case 'a':
dayGroup.a += Number(list[i].amount)
break;
case 'b':
dayGroup.b += Number(list[i].amount)
break;
default:
break;
}
}
}
console.log(daysGroup)
return daysGroup
}
и вот результат, который я получаю:
[
{
date: '2018-11-30',
a: 0,
b: 3
},
{
date: '2018-11-30',
a: 0,
b: 3
},
{
date: '2018-11-30',
a: 0,
b: 3
}
]
делая мой поиск в стеке, я понял, что некоторые люди решили эту проблему, поставив новыйфиктивный объект внутри цикла for.Но это портит результат, который я ищу.
Моя цель - получить такой результат:
[
{
date: '2018-11-29',
a: 0,
b: 2
},
{
date: '2018-11-30',
a: 0,
b: 3
}
]