快速分组一个javascript数组

前端之家收集整理的这篇文章主要介绍了快速分组一个javascript数组前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个数千个字符串的数组
['7/21/2011','7/21/2011','7/20/2011',etc]

我目前正在运行这个代码,通过字符串进行分组,得到最大组值:

var max = 0;
var group = {};
arr.map(function (value) {
  if (group[value]) {
    group[value]++;
  } else {
    group[value] = 1;
  }
  max = Math.max(max,group[value]);
});

是否有任何改进,使此代码运行更快?

编辑:
结果是: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; }
}

最好的事情是衡量你所关心的浏览器.

猜你在找的JavaScript相关文章