Сортировка HTML таблиц в JavaScript с использованием регулярных выражений - PullRequest
1 голос
/ 03 февраля 2020

Я пытаюсь сделать HTML систему сортировки таблиц в JavaScript. Все, что я хочу, это отсортировать каждый столбец, нажав на него, но я думаю, что для этого мне нужно использовать регулярное выражение. Видите ли, я хочу сначала отсортировать числа (0-9), затем отсортировать их по алфавиту (az), затем все остальное (специальные символы) и последние пустые ячейки.

Это порядок, в котором он должен go .

1
03
5
data
data1
-data
-data1
*empty cells*
*empty cells*

Код внизу может сортировать только пустые ячейки снизу ( Код, взятый в настоящее время из Сортировка HTML таблицы с JavaScript):

var getCellValue = function(tr, idx) {
    return tr.children[idx].innerText || tr.children[idx].textContent;
}

var comparer = function(idx, asc) {
    return function(a, b) {
        return function(v1, v2) {
            if (v1 == "")
                return 1;
            if (v2 == "")
                return -1;
            return v1 != "" && v2 != "" && !isNaN(v1) && !isNaN(v2) ? v1 - v2 : v1.toString().localeCompare(v2);
        }(getCellValue(asc ? a : b, idx), getCellValue(asc ? b : a, idx));
    }
};

Array.prototype.slice.call(document.querySelectorAll("th.sortable")).forEach(function(th) {
    th.addEventListener("click", function() {
        var table = th.parentNode
        var tbody = document.querySelector("tbody")
        while (table.tagName.toUpperCase() != "TABLE") table = table.parentNode;
        Array.prototype.slice.call(tbody.querySelectorAll("tr"))
            .sort(comparer(Array.prototype.slice.call(th.parentNode.children).indexOf(th), this.asc = !this.asc))
            .forEach(function(tr) {
                tbody.appendChild(tr)
            });
    })
}); 

Кто-нибудь знает простое решение моей проблемы?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...