我有一组存储在数组中的JSON数据。 JSON看起来像这样:
{
"id": "1",
"key": "2"
}
我正在尝试使用for / in循环对JSON字符串数组中的所有“键”值进行求和。
var total = 0;
for (var object in array) {
total += object.value;
}
预期输出为3.但是,这种安排似乎不正确。我在Node.js工作。有人能指出我正确的方向吗?
答案 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);