如何查找Javascript数组中最高元素的出现次数? 函数findMaxOccurence(ar){ ar.sort().reverse()//将已排序数组的最大值反转为最小值 计数=0; 对于(i=0;i

如何查找Javascript数组中最高元素的出现次数? 函数findMaxOccurence(ar){ ar.sort().reverse()//将已排序数组的最大值反转为最小值 计数=0; 对于(i=0;i,javascript,arrays,Javascript,Arrays,您可以使用reduce方法来编写更简单的解决方案 reduce()方法对累加器和每个累加器应用一个函数 数组中的元素(从左到右),以将其缩减为单个 价值观 let dataset=[2,8,4,8,6,4,7,8]; 设max=Math.max(…数据集); var count=dataset.reduce(函数(计数器,值){ 返回计数器+(值===最大值); }, 0); console.log(count);可以在单个循环中使用对象作为临时结果集 函数findMaxOccurence(

您可以使用
reduce
方法来编写更简单的解决方案

reduce()方法对累加器和每个累加器应用一个函数 数组中的元素(从左到右),以将其缩减为单个 价值观

let dataset=[2,8,4,8,6,4,7,8];
设max=Math.max(…数据集);
var count=dataset.reduce(函数(计数器,值){
返回计数器+(值===最大值);
}, 0);
console.log(count);
可以在单个循环中使用对象作为临时结果集

函数findMaxOccurence(数组){
返回数组.reduce(函数(r,a){
如果(!r | | a>r.value){
返回{value:a,count:1};
}
如果(r.value==a){
r、 计数++;
}
返回r;
},未定义)。计数;
}

log(findMaxOccurence([1,3,4,2,4,2,1,3]);
查找以下两种方法:

function findMaxOccurence(ar){    
        ar.sort().reverse() // Reverses a sorted array Max to min 
        count = 0;
        for(i=0;i<ar.length;i++){
            ++count
            if(i == ar.length - 1){//break out when last element reached
                break
            }
            if(ar[i+1] != ar[i]){
                break
            }
        }
    return count
}
函数findMaxOccurence(ar){
ar.sort().reverse();//将已排序数组的最大值反转为最小值
var计数=1;
对于(变量i=1;i
您可以使用下面提供的这两种解决方案,只需记住过滤器解决方案的速度要快一点^^

//代码
设数据集=[2,8,4,8,6,4,7,8];
设t0=performance.now();
countWithReduce(数据集);
设t1=performance.now();
log(“对countWithReduce的调用花费了“+(t1-t0)+”毫秒。”)
t0=性能。现在();
countWithFilter(数据集);
t1=性能。现在();
log(“对countWithFilter的调用花费了“+(t1-t0)+”毫秒。”)
//功能
函数countWithReduce(arr){
设max=Math.max(…arr);
let count=arr.reduce(函数(计数器,值){
返回计数器+(值===最大值);
}, 0);
控制台日志(计数);
}
函数countWithFilter(arr){
设max=Math.max(…arr);
让count=arr.filter(x=>x==max).length;
控制台日志(计数);

}
nice solution!!这3个点是什么意思?@MarcoSalerno你也可以使用
dataset.filter(x=>x==max)。length
这个解决方案有O(nlogn)+O(n)。可用的代码有什么问题吗?这并不完美!测试的好解决方案。
function findMaxOccurence(ar){    
    ar.sort().reverse(); // Reverses a sorted array Max to min
    var count = 1;
    for(var i = 1; i < ar.length; i++){
        if(ar[i] == ar[0])
            count++;
    }
    return count
}

function findMaxOccurence(ar){    
    ar.sort().reverse(); // Reverses a sorted array Max to min
    var count = 1;
    for(var i = 1; i < ar.length; i++){
        if(ar[i] != ar[0])
            break;
        count++;
    }
    return count
}