javascript - 列表中最常出现的数字(众数) - 只想获取最高值

标签 javascript mode

我试图获取数组中最常出现的数字,因此对于包含 1,2,10,5,1 的数组,结果应该是 1。我编写的代码返回了每个数字,所以 1 出现两次,2 出现一次,10 出现一次等等。有什么建议我可以修复我的结果吗?

function mode(arr) {
var uniqNum = {};
var numCounter = function(num, counter) {
  if(!uniqNum.hasOwnProperty(num)) {
    uniqNum[num] = 1;
  } else {
    uniqNum[num] ++;
    }
};
arr.forEach(numCounter);
return uniqNum;
}

最佳答案

我保持您的代码不变并添加了一些额外的语句。这是演示:http://codepen.io/PiotrBerebecki/pen/rrdxRo

function mode(arr) {
  var uniqNum = {};

  var numCounter = function(num, counter) {
    if(!uniqNum.hasOwnProperty(num)) {
      uniqNum[num] = 1;
    } else {
      uniqNum[num] ++;
    }
  };

  arr.forEach(numCounter);

  return Object.keys(uniqNum)
    .sort((a,b) => uniqNum[b] - uniqNum[a])                       // sort by frequency
    .filter((val,ind,array) => uniqNum[array[0]] == uniqNum[val]) // leave only most frequent
    .map(val => Number(val));                                     // convert text to number
}

console.log(  JSON.stringify(mode([3,3,2,4,4]))  ) // [3,4]
console.log(  JSON.stringify(mode([2,4,3,3]))    ) // [3]

关于javascript - 列表中最常出现的数字(众数) - 只想获取最高值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39937361/

相关文章:

javascript - angularjs 将计数限制为当前范围

javascript - 具有多个文件输入的表单

python - 选择具有最低值的模式

python - 如何错误检查 Python 统计模式功能?

c - 替代 fopen()'s mode "wx"for Windows fopen()?

sql - 如何确保在雪花中使用 mode() 的查询的确定性结果

javascript - 使用 Greensock 制作雪佛龙动画

javascript - 如何在 jQuery timepicker 插件中设置最大时间限制

javascript - 我如何检测用户何时离开我的站点,而不仅仅是转到其他页面?

python - Pandas:用组的模式填充 na