计算javascript对象的属性值

时间:2013-07-12 12:52:24

标签: json object properties count

我有一个javascript对象,我通过json从数据库获取。有没有简单的方法如何根据同一个月计算值? (颜色不重要)。所以结果将是这样的:

data = [
{
    "value": 30,
    "month": 8,
    "color": "#49e630"
},
{
    "value": 50,
    "month": 7,
    "color": "#5001dc"
},
{
    "value": 100,
    "month": 7,
    "color": "#6365c3"
}
]

result = [
{
    "value": 30,
    "month": 8,
    "color": "#49e630"
},
{
    "value": 150,
    "month": 7,
    "color": "#6365c3"
}
]

1 个答案:

答案 0 :(得分:0)

如何根据月份值创建地图,如下所示:

//populate a map with keys based on the month
var monthMap = new Object();
for (var i = 0; i < data.length; i++) {
    if (monthMap[data[i]['month']] == null) {
        monthMap[data[i]['month']] = data[i];
    } else {
        monthMap[data[i]['month']]['value'] += data[i]['value'];
    }
}

//convert monthMap to list
var result = [];
for (var key in monthMap) {
    if (monthMap.hasOwnProperty(key)) {
        result.push(monthMap[key]);
    }
}

编辑:您也可以像这样编写数据循环,这可能会更加清晰:

//populate a map with keys based on the month
var monthMap = new Object();
data.forEach(function(listitem) {

    var month = listitem['month'];

    if (monthMap[month] == null) {
        monthMap[month] = listitem;
    } else {
        monthMap[month]['value'] += listitem['value'];
    }
});

//convert to list...