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

时间:2017-10-09 06:56:51

标签: javascript arrays

logback.xml

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

4 个答案:

答案 0 :(得分:6)

您可以使用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;

答案 1 :(得分:2)

找到以下两种方法:

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
}

答案 2 :(得分:1)

您可以在单个循环中使用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]));

答案 3 :(得分:1)

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

&#13;
&#13;
//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);
}
&#13;
&#13;
&#13;