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

2024-11-16 17:57:51
推荐回答(2个)
回答1:

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

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;
  }
}

回答2:

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;
    }
}