对数字数组进行排序,以便最后显示空值

时间:2017-05-06 11:24:27

标签: javascript arrays sorting

我有一个这样的数组:

var arr = [5, 25, null, 1, null, 30]

使用此代码将数组从低到高排序,这是显示为输出的内容:

  

null null 1 5 25 30

arr.sort(function (a, b) {
    return a - b;
};

但是,我希望最后显示空值,如下所示:

  

1 5 25 30 null null

我查看了Sort an array so that null values always come last并尝试了这段代码,但是输出仍然与第一个相同 - 首先出现空值:

arr.sort(function (a, b) {
        return (a===null)-(b===null) || +(a>b)||-(a<b);
};

2 个答案:

答案 0 :(得分:2)

您可以先按null排序,然后按数字排序。

var arr = [5, 25, null, 1, null, 30]

arr.sort(function(a, b) {
  return (b != null) - (a != null) || a - b;
})

console.log(arr)

答案 1 :(得分:0)

我会使用与null的严格比较,因为省略了任何类型转换,并且第二部分只需要ab的delta来进行排序。

给定的示例适用于具有空值或具有某些属性的对象,例如给定的键numberfor,这在null值和数字的数组中不可用。

&#13;
&#13;
var array = [5, 25, null, 1, null, 30];

array.sort(function(a, b) {
    return (a === null) - (b === null) || a - b;
});

console.log(array);
&#13;
&#13;
&#13;