Метод Array.sort() на месте сортирует элементы массива и возвращает отсорти_ рованный массив. Если метод sort() вызывается без аргументов, то он сортирует элементы массива в алфавитном порядке (при необходимости временно преобра_ зуя их в строки для выполнения сравнения):
var a = new Array("banana", "cherry", "apple"); a.sort();
var s = a.join(", "); // s == "apple, banana, cherry"
Неопределенные элементы переносятся в конец массива.
Для сортировки в каком_либо ином порядке, отличном от алфавитного, можно передать методу sort() в качестве аргумента функцию сравнения. Эта функция устанавливает, какой из двух ее аргументов должен присутствовать раньше в от_ сортированном списке. Если первый аргумент должен предшествовать второму, функция сравнения возвращает отрицательное число. Если первый аргумент в отсортированном массиве должен следовать за вторым, то функция возвраща_ ет число, большее нуля. А если два значения эквивалентны (т. е. порядок их рас_ положения не важен), функция сравнения возвращает 0. Поэтому, например, для сортировки элемента в числовом порядке, а не в алфавитном, можно сделать следующее:
var a = [33, 4, 1111, 222];
a.sort();
// Алфавитный
порядок: 1111, 222, 33, 4
a.sort(function(a,b) {
// Числовой порядок: 4, 33,
222, 1111
return a_b;
//
Возвращает
значение < 0, 0, или > 0
});
//
в зависимости от порядка
сортировки a и b
Обратите внимание, насколько удобно использовать в этом фрагменте функцио_ нальный литерал. Функция сравнения вызывается только один раз, поэтому нет необходимости давать ей имя.
7.7. Методы массивов
В качестве еще одного примера сортировки элементов массива вы можете выпол_ нить алфавитную сортировку массива строк без учета регистра символов, передав методу функцию сравнения, преобразующую перед сравнением оба своих аргу_ мента в нижний регистр (с помощью метода toLowerCase()). Можно придумать и другие функции сортировки, сортирующие числа в различном экзотическом по_ рядке: обратном числовом, нечетные числа перед четными и т. д. Более интерес_ ные возможности, конечно же, открываются, когда сравниваемые элементы мас_ сива представляют собой объекты, а не простые типы, такие как числа и строки.