繁体   English   中英

如何查找 Javascript 数组中最高元素的出现次数?

[英]How to find number of occurrence of highest element in an Javascript Array?

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
}

如何查找 Javascript 数组中最高元素的出现次数?

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

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

 let dataset = [2,8,4,8,6,4,7,8]; let max= Math.max(...dataset); var count = dataset.reduce(function(counter, value) { return counter + (value === max); }, 0); console.log(count); 

此外,您可以通过传递回调函数来使用filter方法。

let count = dataset.filter(x => x === max).length;

找到以下两种方法:

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
}

您可以在单个循环中使用Array#reduce ,并将对象作为临时结果集。

 function findMaxOccurence(array) { return array.reduce(function(r, a) { if (!r || a > r.value) { return { value: a, count: 1 }; } if (r.value === a) { r.count++; } return r; }, undefined).count; } console.log(findMaxOccurence([1, 3, 4, 2, 4, 2, 1, 3])); 

您可以使用下面提供的这两种解决方案,只需记住过滤器解决方案有点快^^

 //Code let dataset = [2,8,4,8,6,4,7,8]; let t0 = performance.now(); countWithReduce(dataset); let t1 = performance.now(); console.log("Call to countWithReduce took " + (t1 - t0) + " milliseconds.") t0 = performance.now(); countWithFilter(dataset); t1 = performance.now(); console.log("Call to countWithFilter took " + (t1 - t0) + " milliseconds.") //Functions function countWithReduce(arr){ let max= Math.max(...arr); let count = arr.reduce(function(counter, value) { return counter + (value === max); }, 0); console.log(count); } function countWithFilter(arr){ let max= Math.max(...arr); let count = arr.filter(x => x === max).length; console.log(count); } 

function findMaxOccurence(ar){
ar.sort((a, b) => b - a);
let count = 0;
for(let i = 0; i < ar.length; i++){
if(ar[i] === ar[0]){
count++;
}
}
return count;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM