[英]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.