JavaScript,遍历每个键并求和

时间:2018-11-05 08:15:56

标签: javascript ecmascript-6

我正在尝试对以下对象的键“总计”进行求和,但找不到方法。我尝试使用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方法。

4 个答案:

答案 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 ...原型链)。

Array.prototype.reduce()

  

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);