Как получить сумму дочерних значений объекта в Javascript реагировать нативно?

1

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

 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);  

Любая помощь будет оценена.

  • 0
    Ключ в том, чтобы использовать Object.values(obj) чтобы сначала превратить его в массив.
Теги:
ecmascript-6
react-native
object

3 ответа

3
Лучший ответ

Вы можете использовать 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);
1

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

var obj = {
  "idtransact1":  {

    "amount": 3000,

  },
  "idtransact2":  {

    "amount": 3000,

  }
}
var sum=0;

Object.values(obj).forEach((x)=>sum+=x.amount)
console.log(sum)
0

Цикл for 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);

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню