Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 数组中JSON值的总和_Javascript_Arrays_Json_Node.js - Fatal编程技术网

Javascript 数组中JSON值的总和

Javascript 数组中JSON值的总和,javascript,arrays,json,node.js,Javascript,Arrays,Json,Node.js,我有一组JSON数据存储在一个数组中。JSON如下所示: { "id": "1", "key": "2" } var array = [{id: "one", key: 2}, {id: "two", key: 8}] 我试图用for/in循环对JSON字符串数组中的所有“key”值求和 var total = 0; for (var object in array) { total += object.value; } 预期产量为3。然而,这种安排似乎不正确。我在No

我有一组JSON数据存储在一个数组中。JSON如下所示:

{
 "id": "1",
 "key": "2"
}
var array = [{id: "one", key: 2}, {id: "two", key: 8}]
我试图用for/in循环对JSON字符串数组中的所有“key”值求和

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

预期产量为3。然而,这种安排似乎不正确。我在Node.js中工作。有人能给我指出正确的方向吗?

如果我们有这样一个数组:

{
 "id": "1",
 "key": "2"
}
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)

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

您可以使用
Object.keys()
以数组形式获取属性,然后使用
map
检索每个属性的值,最后使用该数组上的
reduce
计算总和:

const obj={
“id”:“1”,
“键”:“2”
}
const total=Object.keys(obj)//获取密钥
.map(key=>+obj[key])//以数字形式获取值
.减少((a,b)=>a+b);//总结

控制台日志(总计)json值的总和是什么意思?您正在尝试添加字符串值吗?请尝试添加
of
而不是
中的
for(数组的var对象)
是否要添加一个和两个??请更具体地说你在谈论一个物体。是一个字符串。感谢您的快速回复。我会把帖子编辑得更具体、更准确。刚才看到原来的帖子被编辑了。。。对象结构已更改,不再是值属性,而是键?我的不好。我意识到示例中的键/值对可能不应该有名为“value”的“key”。很好,我更改了它。希望这有帮助,如果没有,请提供完整的数组,我们会解决它。这对我很有用!出于好奇,有没有一种方法可以通过for/in循环实现这一点,或者reduce()是必需的?