Stack Overflow на русском Asked on December 20, 2021
Есть массив:
let users = [{id: 1, balance: 5}, {id:2, balance: 6}, {id: 1, balance: 1}]
Надо чтобы у объектов с одинаковыми id сложился balance
, то есть получилось так:
let users = [{id: 1, balance: 6}, {id:2, balance: 6}]
Можно, например, такими двумя способами. Первый выглядит проще, но он менее эффективный (множественные прохождения по формируемому массиву). Второй использует промежуточную структуру, но меньше промежуточных операций.
{
const users = [{id: 1, balance: 5}, {id: 2, balance: 6}, {id: 1, balance: 1}];
const users1 = users.reduce((acc, entry) => {
const id = entry.id;
const same = acc.find( element => element.id === id);
if (same !== undefined) same.balance += entry.balance;
else acc.push(entry);
return acc;
}, []);
console.log(users1);
}
{
const users = [{id: 1, balance: 5}, {id: 2, balance: 6}, {id: 1, balance: 1}];
const users2 = Object.entries(users.reduce((acc, entry) => {
const id = entry.id;
if (acc[id] !== undefined) acc[id] += entry.balance;
else acc[id] = entry.balance;
return acc;
}, {})).map(([id, balance]) => ({ id: Number(id), balance }));
console.log(users2);
}
Answered by vsemozhebuty on December 20, 2021
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP