Vue сумма значений в объекте
[
{
"date": "18.01.2021",
"retail": "212747",
"ur": "66847",
"yandex": "243400",
"bn": "88766",
"return": "11747"
},
{
"date": "17.01.2021",
"retail": "186360",
"ur": "4540",
"yandex": "234577",
"bn": "122395",
"return": 0
},
{
"date": "16.01.2021",
"retail": "145334",
"ur": "3712",
"yandex": "257950",
"bn": "69175",
"return": "13165"
}
]
Как посчитать значение в объекте суммы retail, ur, yandex и bn от 18.01.2021?
Ответы (1 шт):
Автор решения: nörbörnën
→ Ссылка
Array.prototype.reduce()
Метод reduce() применяет функцию reducer к каждому элементу массива (слева-направо), возвращая одно результирующее значение.
const data = [
{
"date": "18.01.2021", "retail": "212747", "ur": "66847", "yandex": "243400", "bn": "88766", "return": "11747"
},
{
"date": "17.01.2021", "retail": "186360", "ur": "4540", "yandex": "234577", "bn": "122395", "return": 0
},
{
"date": "16.01.2021", "retail": "145334", "ur": "3712", "yandex": "257950", "bn": "69175", "return": "13165"
},
{
"date": "18.01.2021", "retail": "145334", "ur": "3712", "yandex": "257950", "bn": "69175", "return": "13165"
}
];
const {retail, ur, yandex, bn} = data.reduce((acc, item) => {
if (item.date === '18.01.2021') {
['retail', 'ur', 'yandex', 'bn'].forEach((key) => {
if (key in item) {
acc[key] = (acc[key] || 0) + (+(item[key] || 0));
}
});
}
return acc;
}, {});
console.log(retail, ur, yandex, bn)