logback.xml
如何在Javascript数组中找到最高元素的出现次数?
答案 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)
您可以使用下面提供的这两种解决方案,只需记住过滤器解决方案有点快^^
//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;