如何使用比较器在农业网格中对数字进行排序

时间:2020-04-10 06:04:36

标签: javascript sorting ag-grid columnsorting

我一直在努力解决数字值排序问题。 它正确排序升序和正确降序。 如果为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;

                            }                        

1 个答案:

答案 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;
}

ag-grid custom comparator

相关问题