JavaScript сумма значений массива по ключу
JS знаю плохо, сильно не пинайте пж. Есть следующий массив:
var data = [
{
"id": 35,
"agent_id": 3,
"first_name": "William",
"last_name": "Timi",
"country": "Ukraine",
"amount": 234.0,
"currency": "EUR",
"date": "2021-02-10",
"brand": "TradersPros",
"role": "Company Manager",
"img": "profile-photos/jakob-owens-DQPP9rVLYGQ-unsplash.jpg",
"is_ftd": false
},
{
"id": 36,
"agent_id": 6,
"first_name": "IT",
"last_name": "IT",
"country": "Ukraine",
"amount": 148.97,
"currency": "EUR",
"date": "2021-02-10",
"brand": "TradersPros",
"role": "Company Manager",
"img": "profile-photos/mohammad-khaksarmadani-4FDsNcCR8iQ-unsplash.jpg",
"is_ftd": false
},
{
"id": 37,
"agent_id": 6,
"first_name": "IT",
"last_name": "IT",
"country": "Ukraine",
"amount": 148.97,
"currency": "EUR",
"date": "2021-02-10",
"brand": "TradersPros",
"role": "Company Manager",
"img": "profile-photos/mohammad-khaksarmadani-4FDsNcCR8iQ-unsplash.jpg",
"is_ftd": false
}
];
Надо пройтись по массиву, взять все записи с одним ключём agent_id и суммировать все ячейки amount Помогите пж. Спасибо
Ответы (2 шт):
Автор решения: vsemozhebuty
→ Ссылка
Можно так (при отсутствии совпадений функция вернёт 0):
var data = [
{
"id": 35,
"agent_id": 3,
"first_name": "William",
"last_name": "Timi",
"country": "Ukraine",
"amount": 234.0,
"currency": "EUR",
"date": "2021-02-10",
"brand": "TradersPros",
"role": "Company Manager",
"img": "profile-photos/jakob-owens-DQPP9rVLYGQ-unsplash.jpg",
"is_ftd": false
},
{
"id": 36,
"agent_id": 6,
"first_name": "IT",
"last_name": "IT",
"country": "Ukraine",
"amount": 148.97,
"currency": "EUR",
"date": "2021-02-10",
"brand": "TradersPros",
"role": "Company Manager",
"img": "profile-photos/mohammad-khaksarmadani-4FDsNcCR8iQ-unsplash.jpg",
"is_ftd": false
},
{
"id": 37,
"agent_id": 6,
"first_name": "IT",
"last_name": "IT",
"country": "Ukraine",
"amount": 148.97,
"currency": "EUR",
"date": "2021-02-10",
"brand": "TradersPros",
"role": "Company Manager",
"img": "profile-photos/mohammad-khaksarmadani-4FDsNcCR8iQ-unsplash.jpg",
"is_ftd": false
}
];
function getSum(array, id) {
return array.reduce(
(sum, {agent_id, amount}) => sum + (agent_id === id ? amount : 0),
0,
);
}
const sum = getSum(data, 6);
console.log(sum);
Автор решения: Roman
→ Ссылка
Как вариант
function summ(id, arr) {
return arr
.filter(({agent_id}) => agent_id === id)
.reduce((acc, item) => acc + item.amount, 0)
}
var data = [
{
"id": 35,
"agent_id": 3,
"first_name": "William",
"last_name": "Timi",
"country": "Ukraine",
"amount": 234.0,
"currency": "EUR",
"date": "2021-02-10",
"brand": "TradersPros",
"role": "Company Manager",
"img": "profile-photos/jakob-owens-DQPP9rVLYGQ-unsplash.jpg",
"is_ftd": false
},
{
"id": 36,
"agent_id": 6,
"first_name": "IT",
"last_name": "IT",
"country": "Ukraine",
"amount": 148.97,
"currency": "EUR",
"date": "2021-02-10",
"brand": "TradersPros",
"role": "Company Manager",
"img": "profile-photos/mohammad-khaksarmadani-4FDsNcCR8iQ-unsplash.jpg",
"is_ftd": false
},
{
"id": 37,
"agent_id": 6,
"first_name": "IT",
"last_name": "IT",
"country": "Ukraine",
"amount": 148.97,
"currency": "EUR",
"date": "2021-02-10",
"brand": "TradersPros",
"role": "Company Manager",
"img": "profile-photos/mohammad-khaksarmadani-4FDsNcCR8iQ-unsplash.jpg",
"is_ftd": false
}
];
console.log(summ(6, data))