除特定编号外,其他编号按升序排列

时间:2018-08-10 01:47:06

标签: javascript

我如何才能以升序对数字数组进行排序,但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),但没有用

2 个答案:

答案 0 :(得分:7)

尝试按a === 0b === 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);