Per*_*vus 8 javascript group-by count date-range
我正在使用JavaScript.我有一个数组包含这种格式的数据:
[
{"USER_NAME":"User1","LAST_SUCCESSFUL_CONNECT":"1373978337642"},
{"USER_NAME":"User2","LAST_SUCCESSFUL_CONNECT":"1374515704026"},
{"USER_NAME":"User3","LAST_SUCCESSFUL_CONNECT":"1374749782479"}
]
Run Code Online (Sandbox Code Playgroud)
(上面的数字代表UTC日期/时间,以毫秒为单位.
我想按月对数据进行分组(计数).像这样的东西:
[
{"Month":"January, 2014","User_Count": 2},
{"Month":"February, 2014","User_Count": 1},
]
Run Code Online (Sandbox Code Playgroud)
如果简化问题,我可以使用jQuery.
pyg*_*eek 13
这看起来像个map reduce问题.高级解决方案如下:
以下是实现此目标的逐步操作方法:
这些现在按月份分组.
例:
var l = [...];
var o = {};
var f = function(x){
var dt_object = Date(x["LAST_SUCCESSFUL_CONNECT"]); // convert to datetime object
var key = dt_object.year + '-' + dt_object.month;
if (o[key] === undefined) {
var o[key] = [];
};
o[key].push(x)
}
_.map(l, f(x)) //apply f to each member of l
Run Code Online (Sandbox Code Playgroud)
count的列表作为其价值的关键和长度.例:
var g = function(member_count){
//extra logic may go here
return member_count
}
for member in o {
count = _.reduce(l, g(member))
member['count'] = count
}
Run Code Online (Sandbox Code Playgroud)
o['month-year'] //for list of dictionaries in that month
o['month-year']['count'] //for the count of list of dictionaries in that month.
Run Code Online (Sandbox Code Playgroud)
对于map和reducejavascript中的函数,请参阅underscore.js:
http ://underscorejs.org/#map
http://underscorejs.org/#reduce
Javascript日期对象:https:
//developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date
有关Date和DateTime对象的更多信息,请访问:https:
//en.wikipedia.org/wiki/ISO_8601
有关更多信息,请访问map reduce:https:
//en.wikipedia.org/wiki/MapReduce
| 归档时间: |
|
| 查看次数: |
15264 次 |
| 最近记录: |