Как получить сумму дочерних значений объекта в Javascript реагировать нативно? - PullRequest
0 голосов
/ 07 февраля 2019

Вот мой объект:

 var obj = {
  "idtransact1":  {

    "amount": 3000,

  },
  "idtransact2":  {

    "amount": 3000,

  }
}

Я пытаюсь получить сумму всей суммы.Я попытался адаптировать этот пример, но так как это не та же структура данных, я немного растерялся.

var array = [{
  "adults": 2,
  "children": 3
}, {
  "adults": 2,
  "children": 1
}];

var val = array.reduce(function(previousValue, currentValue) {
  return {
    adults: previousValue.adults + currentValue.adults,
    children: previousValue.children + currentValue.children
  }
});
console.log(val);  

Любая помощь будет признательна.

Ответы [ 3 ]

0 голосов
/ 07 февраля 2019

Использование forEach loop

var obj = {
  "idtransact1":  {

    "amount": 3000,

  },
  "idtransact2":  {

    "amount": 3000,

  }
}
var sum=0;

Object.values(obj).forEach((x)=>sum+=x.amount)
console.log(sum)
0 голосов
/ 07 февраля 2019

Цикл in in - ваш друг, когда дело доходит до поиска значений в объекте.

var obj = {
    "idtransact1": {"amount": 3000},
    "idtransact2": {"amount": 3000}};

 var sumAmount = 0;
 for(var char in obj){
     sumAmount += obj[char].amount;
 }
console.log(sumAmount);

Для вашего второго примера цикл for in работает аналогично массиву объектов.

var array = [
    {"adults": 2,"children": 3}, 
    {"adults": 2,"children": 1}];

 var sumAdults = 0;
 var sumChildren = 0;
 for(var char in array){
     sumAdults += array[char].adults;
     sumChildren += array[char].children;
 }

 console.log(sumAdults + " " + sumChildren);

Меньше запоминать, если вы можете искать данные в объектах и ​​данные в массиве объектов одинаково.Наслаждайтесь

0 голосов
/ 07 февраля 2019

Вы можете использовать Object.values() и .reduce(), чтобы получить сумму:

const data = {
  "idtransact1":  { "amount": 3000 },
  "idtransact2":  { "amount": 3000 }
};

const result = Object.values(data).reduce((r, { amount }) => r + amount, 0);
                   
console.log(result);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...