我有一个类似于这样的数组:
var arr = [5, 25, null, 1, null, 30]
使用以下代码将数组从小到大排序,这是输出的结果:
null null 1 5 25 30
arr.sort(function (a, b) {
return a - b;
};
然而,我希望空值显示在最后,如下所示:
我查看了Sort an array so that null values always come last并尝试了这段代码,但输出仍然与第一个相同——空值首先出现:1 5 25 30 null null
arr.sort(function (a, b) {
return (a===null)-(b===null) || +(a>b)||-(a<b);
};
arr.sort((a, b) => (b != null) - (a != null) || b - a)
- Nenad Vracar(b!= null) - (a!= null) = true-false = 1-0 = 1
,当a不为null且b为null时,结果将为-1。如果a和b都不为null,则第一个条件的结果为0,因为false-false = 0-0 = 0
,然后调用表达式的第二部分,即||之后的a-b
。 - Nenad Vracar