为了账号安全,请及时绑定邮箱和手机立即绑定

查找数组中有多少项大于或小于给定数字 Javascript

查找数组中有多少项大于或小于给定数字 Javascript

婷婷同学_ 2023-07-14 10:18:24
 let numbers = [2, 2, 6, 10];const findAvarage = (numbers) => {  let total = 0;  let checkIntegers = numbers.every(i => !Number.isInteger(i))  if (checkIntegers = true) {    for(let i = 0; i < numbers.length; i++) {    total += numbers[i];  }  let avg = total / numbers.length;   return avg  } else {    return "Only integers allowed"  }  const compareNumbers = (numbers) => {    }在此代码中,我计算数组中给定数字的平均值,现在我想使用第二个函数查找数组中有多少数字大于平均数我尝试使用 find 方法,但没有成功,请问有什么解决方案吗?
查看完整描述

5 回答

?
湖上湖

TA贡献2003条经验 获得超2个赞

您可以使用filter函数过滤掉大于平均值的数字。

const avg = findAvarage(numbers)
const count = numbers.filter(number => number > avg).length


查看完整回答
反对 回复 2023-07-14
?
德玛西亚99

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())


查看完整回答
反对 回复 2023-07-14
?
波斯汪

TA贡献1811条经验 获得超4个赞

 const compareNumbers = (numbers) => {

   const avg = findAvarage(numbers);

   let greater = 0;

   

   numbers.forEach((num) => { if (num > avg) greater++; });


   return greater;

 }


查看完整回答
反对 回复 2023-07-14
?
www说

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))


查看完整回答
反对 回复 2023-07-14
?
翻过高山走不出你

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))


查看完整回答
反对 回复 2023-07-14
  • 5 回答
  • 0 关注
  • 111 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信