gpt4 book ai didi

javascript - 如何获取数组中数字的最大出现次数

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:00:16 26 4
gpt4 key购买 nike

作为一个练习的答案,在这个练习中我必须创建一个函数,给定一个数字数组返回出现次数最多的数字,如果超过一个数字的最大出现次数返回次要的数字。这是我所做的实现,但我正在努力弄清楚为什么它在示例中返回 10 而不是 9。

它似乎将 10 < 9 评估为真。怎么了?

function maxOccurencies(arr) {
var aux = [], max = 0, final = null;

for (var i=0,t=arr.length; i<t; i++) {
aux[arr[i]] = (aux[arr[i]] || 0) + 1;
if (aux[arr[i]] > max) max = aux[arr[i]];
}

for (x in aux) {
if ( aux[x] == max && (x < final || final == null)) {
final = x;
}
}

return final;
}

document.write(maxOccurencies([10,10,10,9,9,9,8,7,4,5,1]));

最佳答案

typeof(x) 放入您的第二个循环表明您的一些变量被转换为string 类型!仍在调查发生这种情况的确切位置。你可以替换

if ( aux[x] == max  && (x < final || final == null)) {

if ( aux[x] == max  && (parseInt(x) < parseInt(final) || final == null)) {

返回正确的值 9。

编辑:

非常有趣,我不知道 Javascript 在 for...in 循环中对数组的精确处理。有关详细信息,请参阅以下其他问题:

JavaScript For-each/For-in loop changing element types

Why is using “for…in” with array iteration such a bad idea?

另请注意,您可以使用 arr.forEach(function(element){...}); 并且返回的元素类型完好无损。

关于javascript - 如何获取数组中数字的最大出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36949154/

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