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_up
的sum
得到预期结果600?
.reduce
适用于数组,您拥有的只是一个对象,但您可以将 .reduce
与 Object.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
我有如下对象:
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_up
的sum
得到预期结果600?
.reduce
适用于数组,您拥有的只是一个对象,但您可以将 .reduce
与 Object.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