gpt4 book ai didi

javascript - 从 JavaScript 中的数组中提取最重复的值?

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

我的问题实际上类似于:Extracting the most duplicate value from an array in JavaScript (with jQuery)

解决方案(我发现最好的解决方案,并由我稍作修改):

var arr     = [3, 7, 7, 7, 7, 10, 10, 8, 5, 5, 5, 5, 20, 20, 1],
result = {},
max = 0,
res;

for( var i = 0, total = arr.length; i < total; ++i ) {
var val = arr[i],
inc = ( result[val] || 0 ) + 1;

result[val] = inc;

if( inc > max ) {
max = inc;
res = val;
}
}
alert(res);

我想补充一点:如果我们有,比如说两个出现次数相同的数字,我们如何找到它们中的最小值(上面应该提醒 5 而不是 7,就是这种情况) ?当前的解决方案仅适用于找到最重复的第一个,但不处理重复。谢谢!

最佳答案

在计算发生率之前对数组进行排序:

var arr = [3, 7, 7, 7, 7, 10, 10, 8, 5, 5, 5, 5, 20, 20, 1];

function min_most_duplicate (arr) {
var result = {},
max = 0,
res;

arr = arr.slice(0); // make a copy of the array
arr.sort(function(a, b) { return (a - b); }); // sort it numerically

for( var i = 0, total = arr.length; i < total; ++i ) {
var val = arr[i],
inc = ( result[val] || 0 ) + 1;

result[val] = inc;

if( inc > max ) {
max = inc;
res = val;
}
}

return res;
}

min_most_duplicate(arr); // returns 5

这是可行的,因为 for 循环的编写方式将返回它发现的第一个重复次数最多的数组,因此如果数组已排序,最小的数字将排在第一位,因此它将是那个for 循环找到的那个。

关于javascript - 从 JavaScript 中的数组中提取最重复的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7207566/

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