我有一个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"
}
]
答案 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...