我正在尝试对以下对象的键“总计”进行求和,但找不到方法。我尝试使用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,但我无法对它们求和。此外,我尝试了以下一些答案中建议的reduce方法。
答案 0 :(得分:2)
使用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);
答案 1 :(得分:1)
您可以使用Object.values()
Object.values()
方法返回给定对象自己的可枚举属性值的数组,其顺序与for ... in循环所提供的顺序相同(不同之处在于for-in循环枚举了in ...原型链)。
reduce()
方法在数组的每个成员上执行reducer函数(由您提供),从而产生单个输出值。
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);
答案 2 :(得分:1)
使用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);
答案 3 :(得分:-1)
const sum = Object.keys(yourObject).map(key => yourObject[key].total).reduce((a, b) => a + b, 0);