Если вы некоторое время были в JavaScript, вы должны знать, что сортировка функций сортировки массива является методом в прототипе массива, а именно массив. Давайте посмотрим на описание от Mozilla MDN:
Если сравнение не поставляется, элементы отсортируются путем преобразования их в строки и сравнения строк в лексикографическом («словаре» или «телефонной книге», не численной). Например, «80» приходит до «9» в лексикографическом порядке, но в цифровом составе 9 приходит до 80.
Вот несколько простых примеров:
Кода -копия выглядит следующим образом:
// Выход [1, 2, 3]
console.log ([3, 2, 1] .sort ());
// вывод ["a", "b", "c"]
console.log (["c", "b", "a"]. sort ());
// Вывод [1, 2, "a", "b"]
console.log (["b", 2, "a", 1] .sort ());
Как видно из приведенного выше примера, по умолчанию отсортируется в алфавитном порядке словаря.
К счастью, Sort принимает пользовательскую функцию сравнения, как показано в следующем примере:
Кода -копия выглядит следующим образом:
Функция сравнения функции (a, b) {
if (a> b) {
возврат -1;
} else if (a <b) {
возврат 1;
}еще {
возврат 0;
}
}
// выходы ["Zuojj", "Benjamin", "1"]
console.log (["benjamin", "1", "zuojj"]. Sort (comparefunction));
После сортировки у нас есть еще один вопрос: как контролировать восходящий и убывающий порядок?
Кода -копия выглядит следующим образом:
Функция сравнительной функции (flag) {
флаг = флаг? Флаг: «ASC»;
Функция возврата (a, b) {
if (a> b) {
вернуть флаг === "desc"? -1: 1;
} else if (a <b) {
вернуть флаг === "desc"? 1: -1;
}еще {
возврат 0;
}
};
}
// выходы ["1", "Бенджамин", "Zuojj"]
console.log (["benjamin", "1", "zuojj"]. Sort (comparefunction ()));
// выходы ["Zuojj", "Benjamin", "1"]
console.log (["benjamin", "1", "zuojj"]. Sort (comparefunction ("desc"));
Правила сортировки для сравнения функции следующие:
1. Если он возвращает отрицательное число, A будет отсортирован по более низкому индексу в массиве.
2. Если он возвращает положительное число, A будет отсортирован до более высокого индекса.
3. И если он возвращает 0, сортировки не требуется.
Давайте посмотрим на проход, выбитый из Mozilla MDN:
Поведение метода вида изменилось между JavaScript 1.1 и JavaScript 1.2. Чтобы объяснить это описание, давайте посмотрим на пример:
В JavaScript 1.1 на некоторых платформах метод сорта не работает. Этот метод работает на всех платформах для JavaScript 1.2.
В JavaScript 1.2 этот метод больше не преобразует неопределенные элементы в NULL; Вместо этого он сортирует их до высокого уровня массива. Пожалуйста, нажмите здесь для деталей.
Кода -копия выглядит следующим образом:
var arr = [];
arr [0] = "ant";
arr [5] = "Zebra";
// выходы ["Ant", 5: "Zebra"]
console.log (arr);
// выходы 6
console.log (arr.length);
// выводы "Ant ****** Zebra"
console.log (arr.join ("*"));
// Сорт
var sortArr = arr.sort ();
// выходы ["ant", "Zebra"]
console.log (sortarr);
// выходы 6
console.log (sortarr.length);
// выводит "Ant*Zebra ****"
console.log (sortarr.join ("*"));
Я надеюсь, что эта статья будет полезна для вас, чтобы узнать и понять метод сортировки (). Я надеюсь, что вы будете критиковать и исправить любые неподходящие аспекты в статье.
Справочная ссылка: https://developer.mozilla.org/zh-cn/docs/web/javascript/reference/global_objects/array/sort