Получение общего значения того же идентификатора и отображение окончательного ответа в виде массива json с помощью angularjs - PullRequest
1 голос
/ 11 июня 2019

У меня есть массив Json следующим образом

$scope.array = [{id:"1", tot:20},{id:"2", tot:30},{id:"1", tot:20},{id:"3", tot:50}];

Я хочу получить сумму tot, принадлежащую тому же идентификатору, и отобразить окончательный ответ в виде другого массива Json следующим образом

выход:

[{id:"1", total:40},{id:"2", total:30},{id:"3", total:50}]

Как мне добиться этого с помощью angularjs?

1 Ответ

2 голосов
/ 11 июня 2019

Я бы решил это, используя Array.reduce. Как это:

var array = [{id:"1", tot:20},{id:"2", tot:30},{id:"1", tot:20},{id:"3", tot:50}];

var res = array.reduce(function (agg, obj) {
  var objForId = agg.filter(function (idObj) { return idObj.id === obj.id})[0]
  
  if (objForId) {
    objForId.total += obj.tot;
  } else {
    agg.push({
      id: obj.id,
      total: obj.tot
    })
  }

  return agg;
}, [])

console.log(res)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...