Задать вопрос
@soulmatesneverdie

Функция сортировки массива в js?

Рассматриваю метод sort(fn) для сортировки массива. В учебнике говорится о том, что без fn - массивы сравниваются как строки. Для того,чтобы задать свой порядок сортировки нужно указать функцию.
Например, массив = [1,2,15]. Для правильной его сортировки пишут такую функцию
function compareNumeric(a, b) {
  if (a > b) return 1;
  if (a < b) return -1;
}

var arr = [ 1, 2, 15 ];

arr.sort(compareNumeric);

alert(arr);  // 1, 2, 15


Объясните, пожалуйста, новичку, что мы делаем в строке функции, где if и return, что порядок сортировки у нас меняется на правильный ( по порядку ).
  • Вопрос задан
  • 2203 просмотра
Подписаться 1 Простой 1 комментарий
Решение пользователя Сергей Соколов К ответам на вопрос (2)
sergiks
@sergiks Куратор тега JavaScript
♬♬
в документации на MDN неплохо описано назначение сортировочной функции:
Если функция сравнения compareFunction предоставлена, элементы массива сортируются в соответствии с её возвращаемым значением. Если сравниваются два элемента a и b, то:

Если compareFunction(a, b) меньше 0, сортировка поставит a по меньшему индексу, чем b, то есть, a идёт первым.

Если compareFunction(a, b) вернёт 0, сортировка оставит a и b неизменными по отношению друг к другу, но отсортирует их по отношению ко всем другим элементам. Обратите внимание: стандарт ECMAscript не гарантирует данное поведение, и ему следуют не все браузеры (например, версии Mozilla по крайней мере, до 2003 года).

Если compareFunction(a, b) больше 0, сортировка поставит b по меньшему индексу, чем a.

Функция compareFunction(a, b) должна всегда возвращать одинаковое значение для определённой пары элементов a и b. Если будут возвращаться непоследовательные результаты, порядок сортировки будет не определён.
Ответ написан
Комментировать