我一直在努力解决数字值排序问题。 它正确排序升序和正确降序。 如果为null,则表示排序不正确。 就像有1,2,3,null 对于升序它像1,2,3,null.Here我需要在第一个位置为null。 对于降序,它是正确的3,2,1,null。
期望升序为1,2,3,4。 实际是1,2,3,4,null
function nullsLastonSortNumber(val1, val2, node1, node2, isInverted) {
var isNullFirst = document.getElementById('{!$Component.pageId.oneValue}').innerHTML;
var currentSort= gridOptions.api.getSortModel();
if(isNullFirst=='false'){
if(currentSort[0].sort === 'asc'){
if (val1 === null && val2 === null) {
return 0;
}
if(val1 === null) {
return -1;
}
if (val2 === null) {
return 1;
}
}
else if(currentSort[0].sort === 'desc'){
if (val1 === null && val2 === null)
{
return 0;
}
if (val1 === null) {
return -1;
}
if (val2 === null) {
return 1;
}
}
return val1 - val2;
}
答案 0 :(得分:0)
如果您首先需要使用null升序排序,则可以执行以下操作:
var arr = [1,2,3,null];
arr.sort((a, b) => a-b);
这导致[null, 1, 2, 3]
以及降序:
arr.sort((a, b) => b-a);
导致[3, 2, 1, null]
您可以将方法重写为:
function nullsLastonSortNumber(val1, val2, nodeA, nodeB, isInverted) {
val1 = val1 || -Number.MAX_VALUE;
val2 = val2 || -Number.MAX_VALUE;
var currentSort = gridOptions.api.getSortModel();
if(currentSort[0].sort === 'desc'){
return val2 - val1
}
return val1 - val2;
}