Массив объектов, сложение по одинаковым элементам внутри

54
15 января 2022, 16:10

имеется

let arr = [{idBox: "15", id: 13, price: 8805},
{idBox: "6", id: 14, price: 4467},
{idBox: "6", id: 15, price: 18853},
{idBox: "7", id: 16, price: 5649},
{idBox: "7", id: 17, price: 3645},
{idBox: "7", id: 18, price: 2505},
{idBox: "7", id: 19, price: 4397},
{idBox: "8", id: 20, price: 5548},
{idBox: "8", id: 21, price: 3645},
{idBox: "8", id: 22, price: 3645}]

Не могу придумать каким образом сложить элементы price с одинаковыми значениями idBox, что бы конечный вариант был как пример

{idBox: "6", id: 14, price: (здесь сумма одинаковых idBox(4467 + 18853))},
{idBox: "6", id: 15, price: (здесь сумма одинаковых idBox)}

либо новый массив объектов типа [{idBox: "6", price:сумма одинаковых элементов}]

Answer 1

Можно вот так. В результате объект с одержащий ключи - idBox : значение - сумму его price

let res = Object.fromEntries(arr.map(item => [item.idBox, 0]));
arr.forEach(item => {res[item.idBox] += item.price})

Ссылка на fiddle

Answer 2

Можно использовать Array.reduce

const  arr = [{idBox: "15", id: 13, price: 8805}, 
              {idBox: "6", id: 14, price: 4467}, 
              {idBox: "6", id: 15, price: 18853}, 
              {idBox: "7", id: 16, price: 5649}, 
              {idBox: "7", id: 17, price: 3645}, 
              {idBox: "7", id: 18, price: 2505}, 
              {idBox: "7", id: 19, price: 4397}, 
              {idBox: "8", id: 20, price: 5548}, 
              {idBox: "8", id: 21, price: 3645}, 
              {idBox: "8", id: 22, price: 3645}]; 
               
               
let result = arr.reduce((a,c) => (a[c.idBox] = (a[c.idBox] || 0) + c.price, a), {});               
console.log(result);

Answer 3

Наговнокодил =) зато просто и понятно

var arr2 = new Object
for(a in arr)
{
  arr2[arr[a].idBox] =(!!arr2[arr[a].idBox]) + arr[a].price
}
READ ALSO
вызвать функцию кнопкой на клавиатуре

вызвать функцию кнопкой на клавиатуре

Работает! Хочу, чтобы при нажатии CTRL, запускалась функция playlistRefresh();

182
Помощь в коде для реализации функции Dark Theme на сайте

Помощь в коде для реализации функции Dark Theme на сайте

на странице моего сайта реализована функция "dark theme", но при перезагрузке все возвращается и поэтому нужна помощь, чтобы реализовать данную...

125
вычисление ряда суммы числа слагаемых

вычисление ряда суммы числа слагаемых

Вот задание: для всех значений X, задаваемых параметрами из набора: начальное значение А, конечное значение В, шаг Dx, количество шагов N x, ограничение...

138