微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

原文地址:https://www.jb51.cc/js/153031.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐