Когда дело доходит до сортировки таблицы, первое, о чем нам нужно поговорить, это сортировка массива, потому что сортировка массива является основой сортировки таблицы.
JavaScript предоставляет метод SORT () для массивов для сортировки таблицы. По умолчанию этот метод будет распоряжаться массивами в массиве в порядке кодов ASCII. JavaScript также предоставляет метод Array Reverse () для массивов.
Взгляните на пример:
Кода -копия выглядит следующим образом:
function sortarray () {
var arraytest = ["z", 5,2, "a", 32,3];
arraytest.sort ();
Alert (arraytest.toString ()); // Вывод: 2,3,32,5, а, Z.
arraytest.reverse ();
Alert (arraytest.toString ()); // Вывод: Z, A, 5,32,3,2
}
SortArray ();
Ха -ха, 5 больше 32, очевидно, что это не тот результат, который мы хотим. Я только что сказал, что метод сортировки () сортируется в порядке кода ASCII.
Фактически, метод SORT () также позволяет принимать параметр типа функции, который мы можем назвать функцией сравнения. Когда функция сравнения может получить два параметра, следующая функция возвращает значение значения:
Кода -копия выглядит следующим образом:
-1: первый параметр меньше второго параметра
0: первый параметр равен второму параметру
1: Первый параметр больше второго параметра
Кода -копия выглядит следующим образом:
/**
* Функция сравнения
* @param {объект} param1 param 1 для сравнения
* @param {объект} param2 param 2 для сравнения
* @return {номер} if param1> param2 возвращает 1
* Если param1 == param2 возвращает 0
* Если Param1 <param2 возвращает -1
*/
Функция comparefunc (param1, param2) {
// Если оба параметра типа строки
if (typeof param1 == "string" && typeof param2 == "string") {
вернуть param1.localecompare (param2);
}
// Если параметр 1 - число, параметр 2 - строка
if (typeof param1 == "number" && typeof param2 == "string") {
возврат -1;
}
// Если параметр 1 - строка, параметр 2 - это число
if (typeof param1 == "string" && typeof param2 == "number") {
возврат 1;
}
// Если оба параметра являются числами
if (typeof param1 == "number" && typeof param2 == "number") {
if (param1> param2) return 1;
if (param1 == param2) return 0;
if (param1 <param2) return -1;
}
}
Когда мы выполняем arraytest.sort (comparefunc), мы получаем правильный результат.
На этом этапе мы должны объяснить использование метода LocaleCompare (), который является методом для сортировки строк, только с одним параметром, а именно по строке, которая должна сравниваться.
Конкретное объяснение заключается в следующем:
1. Если объект строки расположены в алфавитном порядке перед строкой в параметре, верните отрицательное число
2. Если объект строки расположена в порядке символа после строки в параметре, верните положительное число
3. Если объект строки равен строке в параметре, верните 0.
Кроме того, метод LocaleCompare () имеет еще одну уникальную функцию. Эта уникальная особенность может быть отражена в его локали подписи метода (на месте, локально), то есть ее реализация основана на региональных характеристиках. Если в английской системе его реализация может быть в порядке возрастания строк, а если на китайском языке, его реализация основана на пининине первой буквы.
Ха -ха, это означает, что даже если мы вовлеим китайских иероглифы в программу, наша сортировка не пойдет не так.
Обратитесь к следующей программе:
Кода -копия выглядит следующим образом:
var testarray = ["foot", "book", "ite", "Home"];
document.write (testarray.sort (
Функция сравнения функции (param1, param2) {
вернуть param1.localecompare (param2); // Вывод: 一, дом, книга, нога
}
));