选择特定JSON键's值进行求和

Select specific JSON key's value to sum it

本文关键字:求和 JSON 选择      更新时间:2023-09-26

对于像这样的JSON对象:

[{
    "gemeente": "amsterdam",
    "stadsdeel": "centrum",
    "adres": "damrak 28-30",
    "bvo": "2000",
},
{
    "gemeente": "amsterdam",
    "stadsdeel": "centrum",
    "adres": "damrak 66",
    "bvo": "1500",
    "": ""
}]

我试图得到bvo值的总和。在这种情况下,输出将是3500。然后我需要使用这个数字来进行数据可视化。我正在使用d3.js,但任何Javascript解决方案都可以。

D3很好地处理了这个问题。和,没有适当的测试,我认为语法应该是这样的

d3.sum(list, function(d) { return d.bvo; });

你需要的是

var list = [{
    "gemeente": "amsterdam",
    "stadsdeel": "centrum",
    "adres": "damrak 28-30",
    "bvo": "2000",
},
{
    "gemeente": "amsterdam",
    "stadsdeel": "centrum",
    "adres": "damrak 66",
    "bvo": "1500",
    "": ""
}];
// code to sum the values
var sum = 0;
for(var len = list.length, i=0; i < len; i++){ // for each object in the list
    var item = list[i]; 
    sum += parseInt(item.bvo, 10); // parse its "bvo" element as integer and add it to the sum
}
// output to console the sum.. or do whatever you want with the sum here..
console.log(sum);

我用常规Javascript得到了答案:

var SumByTipe = {};
for (i in data) {
    var currtipe = data[i].tipe;
    if (currtipe in SumByTipe) {
        for (j in data[i]) {
            if (j != "tipe" && j != "mc") {
                SumByTipe[currtipe][j + '_total'] += parseFloat(data[i][j]);
            }
        }
    }
    else {
        var firstSum = {};
        for (j in data[i]) {
            if (j != "tipe" && j != "mc"){
                firstSum[j + '_total'] = parseFloat(data[i][j]);
            }
        }
        SumByTipe[currtipe] = firstSum;
    }
}
console.log(SumByTipe);

虽然我不太明白它是如何工作的,但它工作得很好。: -)