Добавить вместе массив объектов

Я пытаюсь сложить массив объектов, используя Reduce, но я не могу заставить его работать.

const testArray = [ 
    {
        "T1": 1
    },
    {
        "T2": 12
    },
    {
        "T3": 20
    }
]

уменьшить функцию

const q = testArray.reduce((count, x) => count + x.P1Count);

результат = 33

2 ответа

Вы можете получить значения и уменьшить значения.

const
    add = (a, b) => a + b,
    array = [{ "T1": 1 }, { "T2": 12 }, { "T3": 20 }],
    total = array.reduce(
        (s, o) => Object.values(o).reduce(add, s),
        0
    );

console.log(total);

Второй аргумент reduce()функция будет членом массива, для которого вызывается метод limit. В вашем случае, который будет{ T[i]: ... }гдеi = 1, 2, 3,

Вы можете попробовать это:

const testArray = [ 
    {
        "T1": 1
    },
    {
        "T2": 12
    },
    {
        "T3": 20
    }
]
const x = testArray.reduce((count, x, index) => {
  const key = `T${index+1}`; // prepare the dynamic key T1, T2,...
  return count + x[key];
}, 0); // <-- 0 is the initial value of sum 

console.log(x)

Другие вопросы по тегам