怎么用js写一段代码,求一个数组中的最大奇数和最小偶数,并返回他们的和,如果一个数不存在则返回null。

想了好久,大概思路懂,但就是写不出来不会写呀。哪个大神能写一下让我参考一下。... 想了好久,大概思路懂,但就是写不出来不会写呀。哪个大神能写一下让我参考一下。 展开
 我来答
海甸岛的骄傲
2017-04-14 · TA获得超过820个赞
知道小有建树答主
回答量:147
采纳率:100%
帮助的人:134万
展开全部

我写了一个便于理解的算法,只要进行一次循环,不用排序。请参考:

var arr = [1,3,5,7,9,2,4,6,8,10];  //定义一个数组
alert(func(arr));  //调用函数

function func(arr){
  var odd = null,  //odd是存放最大奇数的变量
      even = null;  //even是存放最小偶数的变量

  //下面对数组元素进行循环判断
  for(var n = 0; n < arr.length; n++){
    //如果元素模2为0,则是偶数
    if(arr[n] % 2 == 0){
      //如果odd变量是null,或者当前元素大于odd
      //则给odd变量值替换为当前元素
      if(odd == null || arr[n] > odd){
        odd = arr[n];
      }
    }
    //同理,
    //如果元素模2不为0,则是奇数
    if(arr[n] % 2 != 0){
      //如果even变量是null,或者当前元素小于even
      //则给even变量值替换为当前元素
      if(even == null || arr[n] < even){
        even = arr[n];
      }
    }
  }

  //最后返回结果
  if(odd != null && even != null){
    return odd + even;
  }else{
    return null;
  }
}
追问
哦哦你已经用alert了
miaoch
2017-04-14 · TA获得超过1204个赞
知道小有建树答主
回答量:814
采纳率:83%
帮助的人:341万
展开全部
function test(arr) {
    //先排序
    arr.sort(function (value1, value2) {
        return value1 - value2;
    });
    //取出偶数和奇数数组
    var even = arr.filter(function (item) {
        return item % 2 == 0;
    })
    var odd = arr.filter(function (item) {
        return item % 2 == 1;
    })
    if (even.length > 0 && odd.length > 0) {
        return even.shift() + odd.pop();
    } else {
        return null;
    }
}
更多追问追答
追问
数组这样定义对吧  var arr=new Array(5,9,3,5,2,1,8,;6);
追答
数组可以直接 var arr = [1,2,3,4,5,6];
也可以 var arr = new Array(); arr.push(xx) arr[0] = xx
就是不能用你这种, 构造方法接收的参数是数组的原始长度,你传入了好多参数,其实后面的参数都没用了,你这个例子 相当于就是new Array(5);
arr的length会是5 但是内容是undefined arr[5]也是undefined,不过是真的没有定义,0~4的undefined是本该有值 还没有定义
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式