5 回答

TA貢獻(xiàn)2003條經(jīng)驗(yàn) 獲得超2個(gè)贊
您可以使用filter
函數(shù)過(guò)濾掉大于平均值的數(shù)字。
const avg = findAvarage(numbers) const count = numbers.filter(number => number > avg).length

TA貢獻(xiàn)1770條經(jīng)驗(yàn) 獲得超3個(gè)贊
Javascript 沒(méi)有提供很多可用于數(shù)組的擴(kuò)展方法,您只有一些基本操作。如果您將此需求轉(zhuǎn)化為數(shù)組的擴(kuò)展,您可以在任何地方使用它們而無(wú)需調(diào)用函數(shù),您的代碼會(huì)更干凈,您可以執(zhí)行以下操作:
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貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超4個(gè)贊
const compareNumbers = (numbers) => {
const avg = findAvarage(numbers);
let greater = 0;
numbers.forEach((num) => { if (num > avg) greater++; });
return greater;
}

TA貢獻(xiàn)1775條經(jīng)驗(yàn) 獲得超8個(gè)贊
這邊走 ?
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貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超3個(gè)贊
你可以使用filter或reduce來(lái)解決它
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))
添加回答
舉報(bào)