Поскольку вы пометили lodash
, это так же просто, как (очистить) это:
_(order).groupBy('id').map(a=>({...a[0], harga: _.sumBy(a, 'harga'), qty: _.sumBy(a, 'qty')})).value()
Вы можете использовать сокращение вместо 2 sumBy, если вы хотите сделать сумму в одномитерация (однако, используя lodash, вы все равно не ищете более быстрого решения с меньшим количеством итераций
let order = [
{
id: 4,
idkatg: 2,
kategori: 'minuman',
nmprod: 'es mambo',
harga: 8000,
qty: 1
},
{
id: 3,
idkatg: 2,
kategori: 'minuman',
nmprod: 'es mambo',
harga: 2000,
qty: 1
},
{
id: 4,
idkatg: 2,
kategori: 'minuman',
nmprod: 'es mambo',
harga: 8000,
qty: 1
},
{
id: 5,
idkatg: 2,
kategori: 'minuman',
nmprod: 'es mambo',
harga: 6000,
qty: 1
},
{
id: 5,
idkatg: 2,
kategori: 'minuman',
nmprod: 'es mambo',
harga: 9000,
qty: 1
}
];
let res =_(order).groupBy('id').map(a=>({...a[0], harga: _.sumBy(a, 'harga'), qty: _.sumBy(a, 'qty')})).value()
console.log(res);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>
/11346618/gruppovoi-massiv-obektov
Существует решение Vanilla JS (и более быстрое) для каждого решения lodash.Но это полностью зависит от вас, что вы хотите, вы уже используете lodash или нет.производительность на самом деле важна или чистота кода и ремонтопригодность и обработка всех ключевых случаев и некоторых других факторов.