Javascript - Как суммировать значения в таком массиве? - PullRequest
0 голосов
/ 06 августа 2020

У меня такой массив:

    let array = {
        [1]: {
          name: 'test 1',
          count: 5  
        },
        [2]: {
            name: 'test 2',
            count: 3  
        }
    }

Как я могу просуммировать значения в столбце «count»? Примеры из простых массивов не работают. Имею себе такой ал oop. Можно как-то лучше сделать?

    let sum = 0
    Object.entries(array).forEach(([key, val]) => {
        sum += val.count
    });

Ответы [ 2 ]

0 голосов
/ 06 августа 2020

На основе ответа, предоставленного @ Sven.hig

  1. Поскольку вы вызываете объект "array", вы можете вместо этого использовать фактический массив.
  2. Создание некоторых функций для абстрагирования от сложности поможет вам лучше понять ваш код, когда вы вернетесь к нему в будущем.

const add = (a, b) => a + b;
const sum = arr => arr.reduce(add, 0);

const data = [{
    name: "test 1",
    count: 5,
  }, {
    name: "test 2",
    count: 3,
  }
];

const total = sum(
  data.map(d => d.count)
);
console.log(total);
0 голосов
/ 06 августа 2020

Используйте reduce

let array = { 1: { name: "test 1", count: 5, }, 2: { name: "test 2", count: 3, }, };

total = Object.values(array).reduce((t, { count }) => t + count, 0); //t accumulator accumulates the value from previous calculation 
console.log(total);

, если вы хотите использовать forEach l oop, как в вашем методе, используйте вместо него Object.values(), потому что вам нужны только значения для вычисления суммы count

let array = {
  1: { name: "test 1", count: 5 },
  2: { name: "test 2", count: 3 },
};

let sum = 0;
Object.values(array).forEach(({ count }) => {
  sum += count;
});
console.log(sum);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...