快速分组一个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; }
}

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

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...