sort()

Метод 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

a.sort(function(a,b) {return b - a}); // Обратный числовой порядок

__________________

Или более подробно на еще одном примере:

function compareNumeric(a, b) {

}

var arr = [ 1, 2, 15 ];

arr.sort(compareNumeric);

console.log(arr);  // 1, 2, 15

Как видно из примера выше, функция, передаваемаяsort, должна иметь два аргумента.

Алгоритм сортировки, встроенный в JavaScript, будет передавать ей для сравнения элементы массива. Она должна возвращать:

  • Положительное значение, если a > b
  • Отрицательное значение, если a < b
  • Если равны – можно 0, но вообще – не важно, что возвращать, если их взаимный порядок не имеет значения.

<<< back

results matching ""

    No results matching ""