排序javascript数组空值始终位于底部

排序javascript数组空值始终位于底部,javascript,Javascript,嘿,我使用的是slickgrid插件,在那里我有sortNumeric函数来按顺序排序数据 function sorterNumeric(a, b) { var x = (isNaN(a[sortcol]) || a[sortcol] === "" || a[sortcol] === null) ? -99e+10 : parseFloat(a[sortcol]); var y = (isNaN(b[sortcol]) || b[sortcol] === "" || b[

嘿,我使用的是slickgrid插件,在那里我有sortNumeric函数来按顺序排序数据

function sorterNumeric(a, b) {
      var x = (isNaN(a[sortcol]) || a[sortcol] === "" || a[sortcol] === null) ? -99e+10 : parseFloat(a[sortcol]);
      var y = (isNaN(b[sortcol]) || b[sortcol] === "" || b[sortcol] === null) ? -99e+10 : parseFloat(b[sortcol]);
      return sortdir * (x === y ? 0 : (x > y ? 1 : -1));
    }

有人能帮我扩展这个排序吗,这样空值总是出现在最后一位

您可以使用比较结果作为所需增量的值

在SlickGrid中,您可以使用要排序的
cols
的属性
sortAsc
获得排序顺序。然后在排序方向上使用闭包

函数sortFn(sortAsc){
返回函数(a,b){
返回(a[sortcol]==null)-(b[sortcol]==null)| | | | | |-1)*(a[sortcol]-b[sortcol]);
}
}
var数组=[{a:1},{a:3},{a:2},{a:8},{a:null},{a:42},{a:null}],
sortcol='a';
array.sort(sortFn(true));//asc
console.log(数组);
array.sort(sortFn(false));//描述
console.log(数组)

。作为控制台包装{max height:100%!important;top:0;}
您可以使用以下代码:

var sortcol = "num";
var sortdir = -1;

function sorterNumeric(a, b) {
    var x = (isNaN(a[sortcol]) || !a[sortcol]) ? 99e+10 * sortdir : parseFloat(a[sortcol]);
    var y = (isNaN(b[sortcol]) || !b[sortcol]) ? 99e+10 * sortdir : parseFloat(b[sortcol]);
    return x > y ? 1 * sortdir : -1 * sortdir;
}

var arr = [{ num: 1 }, { num: 3 }, { num: null }, { num: 7 }, { num: 2 } ]

请同时添加数据。“始终”的意思是“不考虑
sortdir
”?与其使用
-99e+10
(这可能是您能想象到的最小数字),不如使用
-Infinity
,我的意思是,当您在asc中排序时,结尾处应该为1,2,3 NULL,或者结尾处也应该为desc 5,4,3,2,1 NULL。数据只是一些随机数字,我不能使用答案,我必须覆盖我的函数很好!非常优雅的纯JavaScript解决方案。你能帮我覆盖我的函数吗,因为它是slickgrid插件函数,但有一个函数可以对asc或desc@vladimirProp,您可以使用给定的通缉列排序器。!返回0的位置请不要只显示代码。解释一下它是如何工作的