Итак, у меня есть массив массивов, которые содержат только строки.
Массив массивов должен отображаться в виде таблицы и может иметь более 1000 строк с 20 или более значениями в каждой.
например:
var arr = [
["bob","12","yes"],
["joe","","no"],
["tim","19","no"],
["dan","","yes"],
["tim","",""],
["dan","0",""]
]
строки могут содержать все, что может быть представлено в виде строки, в том числе: " "
, ""
, "0"
или "00-00-00"
и т. Д. ... и любой столбец, который можно использовать для упорядочения.
Я сортирую массивы по возрастанию и по убыванию, но некоторые значения, по которым я сортирую, являются пустыми строками: ""
. Как я могу сделать так, чтобы пустые строки (только) всегда были в конце новых массивов во всех современных браузерах?
В настоящее время они находятся в конце при подъеме, но в начале при спуске.
Я сортирую, как показано ниже (Да, я уверен, что могу сделать это и короче):
if (direction == "asc") {
SortedArr = arr.sort(function (a, b) {
if (a[colToSortBy] == '') {
return -1;
}
if (a[colToSortBy].toUpperCase() < b[colToSortBy].toUpperCase()) {
return -1;
}
if (a[colToSortBy].toUpperCase() > b[colToSortBy].toUpperCase()) {
return 1;
}
return 0;
});
} else {
SortedArr = arr.sort(function (a, b) {
if (a[colToSortBy] == '') {
return -1;
}
if (b[colToSortBy].toUpperCase() < a[colToSortBy].toUpperCase()) {
return -1;
}
if (b[colToSortBy].toUpperCase() > a[colToSortBy].toUpperCase()) {
return 1;
}
return 0;
});
}