如何迭代json对象列表?

时间:2015-11-17 15:23:07

标签: javascript jquery json

我正在努力如何在我的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);

4 个答案:

答案 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