求数组中奇数或者偶数元素的个数

JavaScript中一切都是对象,这句话同样适用于函数。函数对象可以作为函数的参数。

函数对象作为另一个函数的参数

一个函数(为方便行文,称为a函数)可以作为另外一个函数(称为b函数)的参数b函数最终可以返回一个具体的值。

从原理上来说,b函数在自己的函数体内调用了a函数,所以需要把a函数的名字作为实际参数传递给b函数。如下:

 
  1. //求最大值
  2. function getMax(a,b) {
  3. return a>b?a:b;
  4. }
  5. //求最小值
  6. function getMin(a,b) {
  7. return a<b?a:b;
  8. }
  9. //下面这个函数以函数作为参数,并最终返回一个值
  10. function getM(func,num1,num2) {
  11. return func(num1,num2);
  12. }
  13. getM(getMax,1,2);//返回2
  14. getM(getMin,1,2);//返回1

我们把a函数的名字(getMax或者getMin)传给b函数(getM()),然后在b函数内部调用闯入的a函数,得到相关的结果。

编程要求

本关的编程任务是补全右侧代码片段中BeginEnd中间的代码,具体要求如下:

  • 已知getOddNumber(a)求数组a中奇元素的个数,getEvenNumber(a)求数组a中偶元素的个数;

  • 完成函数getNumber(func,a),实现:根据函数参数func的不同,求数组a中奇元素的个数或者偶元素的个数;

  • 上一条提到的func的值只有可能是getOddNumber或者getEvenNumber

  • //求数组中奇数元素的个数

    function getOddNumber(a) {

        var result = 0;

        for(var i = 0;i < a.length;i++) {

            if(a[i]%2 != 0)

                result++;

        }

        return result;

    }

    //求数组中偶数元素的个数

    function getEvenNumber(a) {

        var result = 0;

        for(var i = 0;i < a.length;i++) {

            if(a[i]%2 == 0)

                result++;

        }

        return result;

    }

    function getNumber(func,a) {

        //请在此处编写代码

        /********** Begin **********/

        if (func === getOddNumber)

            return getOddNumber(a);

        else return getEvenNumber(a);

        /********** End **********/

    }

    //测试接口

    function mainJs(b,a) {

        a = a.split(",");

        var aLength = a.length;

        for(var i = 0;i < aLength;i++) {

            a[i] = parseInt(a[i]);

        }

        if(b == "getEvenNumber") {

            return getNumber(getEvenNumber,a);

        } else {

            return getNumber(getOddNumber,a);

        }

    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值