Natural Sorting Datatable.js - PullRequest
       17

Natural Sorting Datatable.js

0 голосов
/ 21 мая 2018

Естественная сортировка в datatable.js

Используя этот javascript fuctionnaturalSort (a, b), мы можем сортировать столбцы по любому типу данных

Пример: мы хотим, чтобы сортировка данных была такой же, как 1,101,99,88,103

Мы можем использовать это, и результат будет 1,88,99,101,103

        function naturalSort(a, b) {

            // setup temp-scope variables for comparison evauluation

            var x = a.toString().toLowerCase() || '', y = b.toString().toLowerCase() || '',
            nC = String.fromCharCode(0),
            xN = x.replace(/([-]{0,1}[0-9.]{1,})/g, nC + '$1' + nC).split(nC),
            yN = y.replace(/([-]{0,1}[0-9.]{1,})/g, nC + '$1' + nC).split(nC),
            xD = (new Date(x)).getTime(), yD = (new Date(y)).getTime();

            // natural sorting of dates

            if (xD && yD && xD < yD)
                return -1;
            else if (xD && yD && xD > yD)
                return 1;

            // natural sorting through split numeric strings and default strings
            for (var cLoc = 0, numS = Math.max(xN.length, yN.length) ; cLoc < numS; cLoc++)
                if ((parseFloat(xN[cLoc]) || xN[cLoc]) < (parseFloat(yN[cLoc]) || yN[cLoc]))
                    return -1;
                else if ((parseFloat(xN[cLoc]) || xN[cLoc]) > (parseFloat(yN[cLoc]) || yN[cLoc]))
                    return 1;
            return 0;
        }

        jQuery.fn.dataTableExt.oSort['natural-asc'] = function (a, b) {
            return naturalSort(a, b);
        };

        jQuery.fn.dataTableExt.oSort['natural-desc'] = function (a, b) {
           return naturalSort(a, b) * -1;
        };

Добавить aocolumns в свойствах данных и поставить sType естественно.

       aoColumns: [
            { "sType": "natural" }
        ],
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...