我如何才能以升序对数字数组进行排序,但0除外(最后需要去)。例子
[1,4,6,3,0,3,0,1] => [1,1,3,3,4,6,0,0]
我尝试过arr.sort((a,b)=>a>b && a!=0)
,但没有用
答案 0 :(得分:7)
尝试按a === 0
和b === 0
之间的差异进行排序(将布尔值强制转换为数字),或者如果没有差异,则按a - b
进行排序:
const arr = [1,4,6,3,0,3,0,1]
arr.sort((a,b) => ((a === 0) - (b === 0)) || a - b)
console.log(arr);
答案 1 :(得分:5)
比较函数应该返回一个数字,而不是true/false
。
首先检查哪个数字为0
。如果是,请根据它是第一个还是第二个参数返回1
或-1
。
否则,返回一个正常的比较值。
const arr = [1, 4, 6, 3, 0, 3, 0, 1];
arr.sort((a, b) => {
if (a == 0) {
return 1;
}
if (b == 0) {
return -1;
}
return a - b;
});
console.log(arr);