Javascript 如何使用 reduce 从嵌套对象中获取属性值的总和?

Javascript how to use reduce to get sum of an attribute's value from nested objects?

我有如下对象:

data_sample = {
  "object_1": {
    "irrelevant_data1": 0,
    "irrelevant_data2": 0,
    "data_needed_to_sum_up": 100,
  },
  "object_a": {
    "irrelevant_data1": 0,
    "irrelevant_data2": 0,
    "irrelevant_data3": 0,
    "data_needed_to_sum_up": 200,
  },
  "object_d": {
    "irrelevant_data1": 0,
    "irrelevant_data2": 0,
    "data_needed_to_sum_up": 300,
  },
}

如何使用reduce方法获取data_sample内所有data_needed_to_sum_upsum得到预期结果600?

.reduce 适用于数组,您拥有的只是一个对象,但您可以将 .reduceObject.entries 结合使用,如下所示:

data_sample = {
  "object_1": {
    "irrelevant_data1": 0,
    "irrelevant_data2": 0,
    "data_needed_to_sum_up": 100,
  },
  "object_a": {
    "irrelevant_data1": 0,
    "irrelevant_data2": 0,
    "irrelevant_data3": 0,
    "data_needed_to_sum_up": 200,
  },
  "object_d": {
    "irrelevant_data1": 0,
    "irrelevant_data2": 0,
    "data_needed_to_sum_up": 300,
  },
}

console.log(Object.entries(data_sample).reduce((carry, [_, current]) => carry + current.data_needed_to_sum_up, 0))

您可以使用 Array#reduce on Object.values.

let sum = Object.values(data_sample)
         .reduce((acc,cur)=>acc+cur.data_needed_to_sum_up,0);

试试这个:

console.log(Object.values(data_sample).map((x) => x.data_needed_to_sum_up).reduce((x, y) => x + y));

您可以先使用 Object.values 然后再使用 reduce

data_sample = { "object_1": { "irrelevant_data1": 0, "irrelevant_data2": 0, "data_needed_to_sum_up": 100, }, "object_a": { "irrelevant_data1": 0, "irrelevant_data2": 0, "irrelevant_data3": 0, "data_needed_to_sum_up": 200, }, "object_d": { "irrelevant_data1": 0, "irrelevant_data2": 0, "data_needed_to_sum_up": 300, }, }
res = Object.values(data_sample)
    .reduce((acc,curr) => acc = acc + curr["data_needed_to_sum_up"],0)
console.log(res)

先用Object.valuesto再用reduce