我想知道我是否可以像这样对这个数组进行排序:
[ 0 ,3, 1, 4, 0 ] => [ 1, 3, 4, 0, 0]
细则:
- 数组包含 0 和正数。
- 所有的0都在最后。
- 所有正数按升序排列。
一开始,我用的是js的原始排序功能,比如:
[0, 3, 1, 4, 0].sort(function(previous_value, former_value){
if(previous_value == 0 && former_value != 0 ) {
return 1;
}else if (former_value == 0 && former_value != 0) {
return -1;
}else if (former_value == 0 && former_value == 0) {
return 0;
}else{
return previous_value - former_value;
}
})
然而,我失败了。我想知道是否可以使用 sort
函数实现“我的排序算法”?例如:
[0, 3, 1, 4, 0].sort(function(previous_value, former_value){
//code goes here
})
它会得到正确的答案:
[1, 3, 4, 0, 0]
最佳答案
将 0
赋予更高的优先级
console.log(
[0, 3, 1, 4, 0].sort(function(a, b) {
return a === b ? 0 : (a === 0 ? 1 : (b === 0 ? -1 : a - b));
})
);
如果条件展开
console.log(
[0, 3, 1, 4, 0].sort(function(a, b) {
if (a === b)
return 0;
if (a === 0)
return 1;
if (b === 0)
return -1;
return a - b;
})
);
关于javascript - 是否可以使用原始 sort() 方法在我的算法中对数组进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38006707/