Joe*_*Joe 11 javascript arrays
我有几千个字符串的数组
['7/21/2011', '7/21/2011', '7/21/2011', '7/20/2011', etc]
Run Code Online (Sandbox Code Playgroud)
我目前正在运行此代码以按字符串分组并获取最大组值:
var max = 0;
var group = {};
arr.map(function (value) {
if (group[value]) {
group[value]++;
} else {
group[value] = 1;
}
max = Math.max(max, group[value]);
});
Run Code Online (Sandbox Code Playgroud)
是否有任何改进使这段代码运行得更快?
编辑: 结果在:http://jsperf.com/javascript-array-grouping2
编辑编辑:该测试存在缺陷.迈克塞缪尔的代码是最快的.
6000个条目测试 - > http://jsperf.com/javascript-array-grouping2
10K条目测试 - > http://jsperf.com/javascript-array-grouping
如果你确定这是一个热点并且速度非常重要,我会尝试通过内联max和内联来减少数千个函数调用map.
您还可以通过删除比较来更快地使您的函数体.
var max = 0;
var group = {};
for (var i = arr.length; --i >= 0;) {
var value = arr[i];
var n = group[value] = 1 - -(group[value] | 0);
if (n > max) { max = n; }
}
Run Code Online (Sandbox Code Playgroud)
最好的办法是衡量您关心的浏览器.