Итак, у меня есть массив массивов, который содержит только строки. Массив массивов должен отображаться в виде таблицы и может содержать более 1000 строк с 20 или более значениями в каждом.
например:
var arr = [
["bob","12","yes"],
["joe","","no"],
["tim","19","no"],
["dan","","yes"],
["tim","",""],
["dan","0",""]
]
строки могут содержать все, что может быть представлено в виде строки, включая: " "
, ""
, "0"
или "00-00-00"
и т.д.... и любой столбец my, который будет использоваться для упорядочения.
Я сортирую массивы по возрастанию и убыванию, но некоторые из значений, которые я сортирую, - это пустые строки: ""
. Как я могу получить пустые строки (только), чтобы всегда быть в конце новых массивов во всех современных браузерах?
в настоящее время они находятся в конце при восходящем, но в начале при спуске.
Я сортирую, как показано ниже (Да, я уверен, что тоже могу сделать это короче):
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;
});
}