怎么用js写一段代码,求一个数组中的最大奇数和最小偶数,并返回他们的和,如果一个数不存在则返回null。
2个回答
展开全部
我写了一个便于理解的算法,只要进行一次循环,不用排序。请参考:
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了
展开全部
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是本该有值 还没有定义
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询