使用Map-reduce。這裏是一個使用underscore.js的例子。雖然它有點冗長,但非常簡單。
var data = [{
"USER_NAME": "User1",
"LAST_SUCCESSFUL_CONNECT": "1373978337642"
}, {
"USER_NAME": "User2",
"LAST_SUCCESSFUL_CONNECT": "1374515704026"
}, {
"USER_NAME": "User3",
"LAST_SUCCESSFUL_CONNECT": "1374749782479"
}, {
"USER_NAME": "User4",
"LAST_SUCCESSFUL_CONNECT": "1274749702479"
}];
var monthNames = ["January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"];
var map_result = _.map(data, function (item) {
var d = new Date(new Number(item.LAST_SUCCESSFUL_CONNECT));
var month = monthNames[d.getMonth()] + ", " + d.getFullYear();
return {
"Month": month,
"User_Count": 1
};
});
var result_temp = _.reduce(map_result, function (memo, item) {
if (memo[item.Month] === undefined) {
memo[item.Month] = item.User_Count;
}else{
memo[item.Month] += item.User_Count;
}
return memo;
},{});
//then wrap the result to the format you expected.
var result = _.map(result_temp, function(value, key){
return {
"Month": key,
"User_Count": value
};
});
console.log(result);
該對象是否從服務器返回?如果是這樣,我會建議以正確的格式將數據返回給客戶端,而不是在java腳本中添加解析邏輯。在服務器上運行這種類型的邏輯通常更容易,更容易測試。 – TGH
是的,我從[oData](http://www.odata.org/)中的服務器獲取數據。這意味着我可能甚至不需要更改服務器代碼,而是使用oData的'$ count'選項(我不確定這會給我什麼我想要的)。但是,我已經從先前的查詢中獲得了客戶端中的原始數據,並且我想保存往返行程。 – Perspectivus
如果我的回答確實令人滿意,請將此問題標記爲已回答。否則,精心製作。 – pygeek