gpt4 book ai didi

javascript - 列表中最常出现的数字(众数)——只想得到最高值

转载 作者:行者123 更新时间:2023-11-29 19:09:45 26 4
gpt4 key购买 nike

我正在尝试获取数组中最常出现的数字,因此对于包含 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com