javascript - JQuery Javascript 按最高计数对数组进行排序

标签 javascript jquery arrays sorting count

我有:

myArray = ["ABAB", "ABAB", "ABAB", "CDCD", "EFEF", "EFEF"]

我需要按出现次数进行计数并按最高计数进行排序。这将是返回:

ABAB 3
EFEF 2
CDCD 1

请注意,数组内的参数会不断更改,因此对每个静态或文字文本模式进行“grepping”不会有帮助。

知道使用 JQuery 或纯 JS 实现此目的的最快方法吗?

最佳答案

第一步:构建直方图,作为 map 元素 -> 其速度频率(假设所有元素都是字符串):

var histogramMap = {};
for(var i=0, len=myArray.length; i<len; i++){
  var key = myArray[i];
  histogramMap[key] = (histogramMap[key] || 0) + 1;
}

第二步:转换为输出对象数组:

var histogram = [];
for(key in histogramMap) histogram.push({key: key, freq: histogramMap[key]});

第三步:对直方图进行排序

histogram.sort(function(a,b){return b.freq - a.freq})

这还假设 Object.prototype 未修改。这是一个安全的假设,很多(我认为)库,包括 jQuery,都做出了这个假设。但是,如果您决定向 Object.prototype 添加可枚举属性,这些属性将由 for..in 获取。如果想保险起见,请将第二步修改为:

var histogram = [];
for(key in histogramMap){
  if(histogramMap.hasOwnProperty(i)){
    histogram.push({key: key, freq: histogramMap[key]});
  }
}

关于javascript - JQuery Javascript 按最高计数对数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19464440/

相关文章:

javascript - 有没有办法测量页面加载的内容并显示其百分比?

javascript - Phonegap 的本地存储可靠性

jquery - 4 col 在 Bootstrap 中滚动 一个一个滚动

c# - jquery ajax调用返回值

java - 包含文件和目录的文件数组

javascript - Moment JS如何设置两个日期之间是否相等?

Javascript 时间线问题

javascript - jquery过滤器搜索应根据文本选择匹配的DIV

连接具有相同字段名称的表时的 PHP 关联数组

javascript - 在 mongo shell 中使用 printjson 进行 mongoDB 调试