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是本该有值 还没有定义
追问好详细!太感谢了,还有最后一个问题,怎么打印结果
追答如果是浏览器 你就alert(test([1,2,3,4,5,6,7]))
如果是控制台 你可以吧alert()改成 console.log()
另外下面一个朋友指出我负数的bug
我改一下:
function test(arr) {
//先排序
arr.sort(function (value1, value2) {
return value1 - value2;
});
//取出偶数和奇数数组
var even = arr.filter(function (item) {
return item % 2 == 0 || -item % 2 == 0;
})
var odd = arr.filter(function (item) {
return item % 2 == 1 || -item % 2 == 1;
})
if (even.length > 0 && odd.length > 0) {
return even.shift() + odd.pop();
} else {
return null;
}
}