JavaScript, цикл по каждому ключу и суммировать счет - PullRequest
0 голосов
/ 05 ноября 2018

Я пытаюсь суммировать ключ 'total' из следующего объекта, но не могу найти путь. Я пытался найти его с помощью Object.key

const data = {
  "item1": {},
  "item2": {
      "total": 13,
  },
   "item3": {},
  "item4": {
      "total": 12,
  }
}
const count = Object.keys(data).map(item => data[item].total);
console.log(count);

Это то, что я пробовал, и в consol.log он печатает 13 и 12, но я не могу сделать их сумму. Кроме того, я попытался уменьшить метод, который предлагается в некоторых из следующих ответов.

Ответы [ 4 ]

0 голосов
/ 05 ноября 2018

Используйте Object.values, чтобы получить все значения в ваших данных.
Затем используйте Array.reduce для расчета суммы.

const data = {
  "item1": { "total": 17 },
  "item2": { "total": 13 }
}

const values = Object.values(data);
console.log("Values:", values);

const total = values.reduce((a, c) => a + c.total, 0);
console.log("Total:", total);

Конечно, вам не нужна промежуточная переменная:

const total = Object.values(data).reduce((a, c) => a + c.total, 0);
0 голосов
/ 05 ноября 2018

Вы можете использовать Object.values ​​()

Метод Object.values() возвращает массив значений собственного перечисляемого свойства данного объекта в том же порядке, что и в цикле for ... in (отличие состоит в том, что цикл for-in перечисляет свойства в прототипе). цепочка).

и Array.prototype.reduce ()

Метод reduce() выполняет функцию редуктора (которую вы предоставляете) для каждого члена массива, в результате чего получается одно выходное значение.

const data = {
  "item1": {},
  "item2": {
      "total": 13,
  },
   "item3": {},
  "item4": {
      "total": 12,
  }
}

var sum = Object.values(data)
                .filter(value => Object.keys(value).length !== 0)
                .reduce((a,c) => a+c.total, 0);
console.log(sum);
0 голосов
/ 05 ноября 2018
 const sum = Object.keys(yourObject).map(key => yourObject[key].total).reduce((a, b) => a + b, 0);
0 голосов
/ 05 ноября 2018

Используйте Object.keys() для циклического перебора ключей объекта и доступа к свойству total каждого объекта:

var data = {
  "item1": {
    "total": 17
  },
  "item2": {
    "total": 13
  },
  "item3": {}
};

var sum = 0;
Object.keys(data).forEach(key => sum += data[key].total || 0);
console.log(sum);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...