0

我有一个 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"
}
]
4

1 回答 1

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...
于 2013-07-12T13:55:25.093 回答