Javascript 如何获取数组中数字的最大出现次数
作为一个练习的答案,我必须创建一个函数,给定一个数字数组,返回出现次数最多的数字,如果多个数字出现次数最多,则返回次数。这是我所做的实现,但我正在仔细研究为什么在示例中它返回10而不是9 它似乎认为10<9是正确的。怎么了Javascript 如何获取数组中数字的最大出现次数,javascript,algorithm,Javascript,Algorithm,作为一个练习的答案,我必须创建一个函数,给定一个数字数组,返回出现次数最多的数字,如果多个数字出现次数最多,则返回次数。这是我所做的实现,但我正在仔细研究为什么在示例中它返回10而不是9 它似乎认为10
函数最大发生次数(arr){
var aux=[],max=0,final=null;
对于(var i=0,t=arr.length;i max)max=aux[arr[i]];
}
用于(辅助系统中的x){
如果(aux[x]==max&&(x将typeof(x)
放在第二个循环中会发现一些变量被转换为typestring
!仍然在调查这到底发生在哪里。你可以替换
if ( aux[x] == max && (x < final || final == null)) {
if(辅助[x]=max&&(x
与
if(aux[x]==max&&(parseInt(x)
返回正确的值9
编辑:
非常有趣,我不知道Javascript在for…in循环中精确处理数组。有关更多信息,请参阅以下其他问题:
另外请注意,您可以使用arr.forEach(function(element){…});
返回的元素的类型是完整的。我认为问题在于aux中的x不是一个数字,因此if语句计算不正确。当转换为数字时,它返回9(如下)
(3==3&(“10”<“9”| |“9”==null))计算结果为true
函数最大发生次数(arr){
var aux=[],max=0,final=null;
对于(var i=0,t=arr.length;i max)max=aux[arr[i]];
}
用于(辅助系统中的x){
if(aux[x]==max&(parseInt(x)
“我正在仔细研究为什么在示例中它返回10而不是9。”
这是因为在这种比较中,10比9,8,7,6,5,4,3,2小,但比1大一点。
:)
此小类型更正将修复此问题:
function maxOccurences(arr) {
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;
}
函数MaxOccurrences(arr){
aux=[],max=0,final=null;
对于(var i=0,t=arr.length;i max)max=aux[arr[i]];
}
用于(辅助系统中的x){
如果(aux[x]==max&(+x
Yes,for x in y
为x
提供的值实际上是键而不是数字。您可以将它们用于y[x]
,但在不转换其类型的情况下,不能用于其他计算。
function maxOccurences(arr) {
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;
}