Суммирование значений одинаковых объектов

279
15 января 2018, 07:57

var dataRow = [{id:1, sum: 10}, {id:2, sum: 15}, {id:1, sum: 20}]; 
var obj = {}; 
$(dataRow).each(function(e, i){ 
    obj[i.id] = i.sum; 
}); 
console.log(obj)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

На выходе получается:

{
  "1": 20,
  "2": 15
}

а надо чтобы у объектов с одинаковым значением id суммировался sum

на выходе должен получится объект вот в таком виде:

{
  "1": 30, //  10 + 20
  "2": 15
}
Answer 1

Замените простое присваивание

obj[i.id] = i.sum;

на присваивание со сложением, например вот так

obj[i.id] = (obj[i.id] || 0) + i.sum;

var dataRow = [{id:1, sum: 10}, {id:2, sum: 15}, {id:1, sum: 20}]; 
var obj = {}; 
$(dataRow).each(function(e, i){ 
    obj[i.id] = (obj[i.id] || 0) + i.sum; 
}); 
console.log(obj)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

READ ALSO
Создание колонок таблицы через jQuery

Создание колонок таблицы через jQuery

При вводе значения в поле ( цифры от 1 до 100 ) должны создаваться колонки таблицы с полями <input>

227
Изменение value +/-1000 по нажатию кнопки

Изменение value +/-1000 по нажатию кнопки

Не получается сделать складывание и вычитание к value по нажатию кнопокЗначение input принимает, но в String, а прибавить к нему не получается, прибавляются...

305
Добавить строку в таблицу

Добавить строку в таблицу

как добавить еще 1 строку в таблицу по нажатию кнопки

448