我正在努力如何在我的json对象中总结“B”的所有值。我希望控制台日志向我显示所有“B”值的总计。
var voltot = 0;
$.each(json,function(k,v){
voltot = v.B += voltot ;
//console.log(v.B);
});
console.log(voltot);
这是我完整的JSON对象。
var json=
[
{
"a": "OOCBER",
"b": "OOCL BERLIN",
"c": "CHINA",
"d": "GREAT BRITAIN",
"e": "*PI",
"f": "NGB",
"g": "CN",
"i": "GB",
"n": 9,
"o": 6,
"p": "2015-09-14",
"q": "2015-09-14",
"s": 4,
"u": "40HC",
"v": "TRLU7564566",
"w": "CN0794909",
"x": "LEIGH",
"y": "NINGBO",
"z": 395,
"B": 68.8,
"C": 7987.5,
},
{
"a": "OOCBER",
"b": "OOCL BERLIN",
"c": "CHINA",
"d": "GREAT BRITAIN",
"e": "*PI",
"f": "NGB",
"g": "CN",
"i": "GB",
"n": 9,
"o": 6,
"p": "2015-09-14",
"q": "2015-09-14",
"s": 4,
"u": "40HC",
"v": "TCLU8306124",
"w": "CN0786008",
"x": "OXFORDSHIRE",
"y": "NINGBO",
"z": 412,
"B": 68,
"C": 8790.5,
}
]
我正在努力如何在我的json对象中总结“B”的所有值。我希望控制台日志向我显示所有“B”值的总计。
var voltot = 0;
$.each(json,function(k,v){
voltot = v.B += voltot ;
//console.log(v.B);
});
console.log(voltot);
答案 0 :(得分:4)
这是错误的
voltot = v.B += voltot ;
像这样做
voltot += v.B;
或者
voltot = v.B + voltot ;
答案 1 :(得分:0)
这是JSFiddle。我只是缩小了json并发布了帖子。尝试使用完整的json数组
var json=
[
{
"z": 395,
"B": 68,
"C": 7987.5,
},
{
"z": 395,
"B": 68,
"C": 7987.5,
}
];
var voltot = 0;
$.each(json,function(k,v){
voltot += v.B;
});
console.log(voltot);
答案 2 :(得分:0)
运算符+ =不正确。 @RiccardoC的回答是正确的。
此外,您不需要使用jquery来对值进行求和。您可以简单地执行以下操作
var voltot=0;
json.forEach(function(element) {voltot+=element.B})
forEach函数将为数组的每个元素运行一个回调
答案 3 :(得分:0)
从数组中获取唯一值的首选方法是Array.prototype.reduce方法,它采用回调函数和起始值(将数组减少为单个值)。你可以这样使用它:
json.reduce(function(total, current) { return typeof current.B === "number" ? total + current.B : total; }, 0);
这是JSFiddle。