数组中JSON值的总和

时间:2017-03-20 17:40:39

标签: javascript arrays json node.js

我有一组存储在数组中的JSON数据。 JSON看起来像这样:

{
 "id": "1",
 "key": "2"
}

我正在尝试使用for / in循环对JSON字符串数组中的所有“键”值进行求和。

var total = 0;
    for (var object in array) {
    total += object.value;
}

预期输出为3.但是,这种安排似乎不正确。我在Node.js工作。有人能指出我正确的方向吗?

2 个答案:

答案 0 :(得分:1)

如果我们有一个如下所示的数组:

var array = [{id: "one", key: 2}, {id: "two", key: 8}]

你可以简单地得到这样的总数:

var total = array.reduce((x,y) => x + y.key, 0)

但是,如果你有一个JSON字符串,其值也是字符串(如[{"id":"one","key":"2"},{"id":"two","key":"8"}]'),那么你需要先解析JSON并将值解析为数字:

JSON.parse(array).reduce((x,y) => x + Number.parseFloat(y.key), 0)

答案 1 :(得分:0)

你拥有的不是一个对象数组,而是一个具有多个属性的对象。

您可以使用Object.keys()将属性作为数组获取,然后使用map检索每个属性的值,最后使用reduce来计算该数组:

const obj = {
 "id": "1",
 "key": "2"
}

const total = Object.keys(obj) // Get keys
    .map( key => +obj[key] ) // Get values as numbers
    .reduce ( (a,b) => a+b ); // sum up

console.log(total);