使用javascript sort()方法,我试图对列表进行排序,但排序有一组偶数和奇数.
我尝试的代码与小列表工作正常,但如果列表变大,它不会得到我正确的结果.这是我的代码.
var n = [10,20,21,4,5,6,7,99,0,12,13];
//var n = [10,20,0,12];
n.sort(function(a,b){
if (a % 2 !=b % 2 ){
return a%2;
}else {
return a - b;
}
});
Run Code Online (Sandbox Code Playgroud)
上面的代码按照这个Ans的接受结果给出了我 - [0, 4, 6, 10, 12, 20, 5, 7, 13, 21, 99]而第二个答案是: -[0, 10, 12, 20]
工作正常与此列表,但如果我改变了这个
var n = [10,20,21,4,5,6,7,99,0,12,13,10,20,21,4,5,6,7,99,0,12,13,10,20,21,4,5,6,7,99,0,12,13,10,20,21,4,5,6,7,99,0,12,13];
Run Code Online (Sandbox Code Playgroud)
但在这种情况下,结果是这样的,这是不恰当的.
给我这样的答案
[0, 0, 0, 0, 4, 4, 4, 4, 6, 6, 6, 6, 10, 10, 10, 10, 12, 5, 12, 5, 12, 5, 20, 20, 20, 20, 5, 12, 7, 7, 7, 7, 13, 13, 13, 13, 21, 21, 21, 21, 99, 99, 99, 99] 它是奇数和偶数的混合.
它给了我不正确的结果.任何建议.
Vis*_*ioN 12
最短的时间:
n.sort(function(a, b) {
return a % 2 - b % 2 || a - b;
});
Run Code Online (Sandbox Code Playgroud)
为了使其与负数一起使用,我们可以添加Math.abs():
n.sort(function(a, b) {
return Math.abs(a % 2) - Math.abs(b % 2) || a - b;
});
Run Code Online (Sandbox Code Playgroud)
或者使用按位AND更紧凑的变体:
n.sort(function(a, b) {
return (a & 1) - (b & 1) || a - b;
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5732 次 |
| 最近记录: |