5 回答

TA贡献2003条经验 获得超2个赞
您可以使用filter
函数过滤掉大于平均值的数字。
const avg = findAvarage(numbers) const count = numbers.filter(number => number > avg).length

TA贡献1770条经验 获得超3个赞
Javascript 没有提供很多可用于数组的扩展方法,您只有一些基本操作。如果您将此需求转化为数组的扩展,您可以在任何地方使用它们而无需调用函数,您的代码会更干净,您可以执行以下操作:
Object.defineProperties(Array.prototype, {
count: {
value: function(value) {
if(isNan(value)) return NaN;
return this.filter(x => x>=value).length;
}
},
average:{
value:function(){
let total = 0;
if(!this.every(i => Number.isInteger(i)))
return NaN;
for(let i = 0; i < numbers.length; i++) {
total += numbers[i];
}
return total/this.length;
}
}
});
你可以像这样使用它作为你的例子
var result = numbers.count(numbers.average())

TA贡献1811条经验 获得超4个赞
const compareNumbers = (numbers) => {
const avg = findAvarage(numbers);
let greater = 0;
numbers.forEach((num) => { if (num > avg) greater++; });
return greater;
}

TA贡献1775条经验 获得超8个赞
这边走 ?
const findAvarage=(a,b,c,d) => [a,b,c,d].reduceRight((t,n,i,a)=>
{
t += n
if (!i) t /= a.length
return t
},0)
, greaterOrEqualCount = (a,b,c,d) =>
{
let avg = findAvarage(a,b,c,d)
return [a,b,c,d].reduce((r,n)=>r+(n<avg?0:1),0)
}
console.log("count ",greaterOrEqualCount(2,2,6,10))

TA贡献1875条经验 获得超3个赞
你可以使用filter或reduce来解决它
let numbers = [2, 2, 6, 10];
function countNumbers(number){
return numbers.filter(num=> num>=number).length;
}
function countNumbers2(number){
return numbers.reduce((count,item)=>count+(item>=number),0)
}
console.log(countNumbers(7));
console.log(countNumbers2(3))
添加回答
举报