[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Объясните пожалуйста этот код.
SoMeOnE
Добрый день. Как ф-ия compare влияет на то, что sort правильно обрабатывается.
То что сорт рабоатет с первыми элементами здесь написано
http://javascript.ru/Array/sort
Здесь же дается данный пример использования функционального литерала
Не очень то понятен данный код.
var arr_1 = [5, 20, 3, 4654];
console.log(arr_1.sort());

function compare(a, b) {
return a - b;
}

console.log(arr_1.sort(compare));
glock18
Что именно непонятно?
redreem
sort по умолчанию сортирует по "АЛФАВИТУ", а не по числовому значению элементов.
compare нужен для того, что указать сорту "КАК СРАВНИВАТЬ".
Invis1ble
SoMeOnE
по той ссылке, что ты написал ведь все объясняется:
Цитата
  if(a меньше, чем b по некоторому критерию)
    return -1 // Или любое число, меньшее нуля
  if(a больше, чем b по некоторому критерию)
    return 1  // Или любое число, большее нуля
  // в случае а = b вернуть 0
  return 0
SoMeOnE
Invis1ble
Ну вот имено это не совсем доходит.
redreem
Тогда получается, чт если написать a+b, то опять таки он должен понять, что сортировать по числовому критерию. а в этом случае опять неверно сортирует.

и если написать так

function compare(a, b) {
console.log(a - b);
return a - b;
}

то в консоле возвращает
17
-4634
4649
15
-2

Почему он сначала от первого отнимает второе и третье, а потом санчала от третьего четвертое и только потом от первого последнее и потом от второго четвертое. Не по порядку происходит.
SoMeOnE
Invis1ble
а получается, что консоль не нужен. Он по настоящему возвращает только 1, -1 и 0. ТОгда как он определяет кто из возвращенных единиц больше.
SoMeOnE
А теперь вроде въехал. Он без конца проверяет кто с кем единицу возвращает, а кто -1 возвращает. Правильно понимаю. Простая ф-ия сортировки которую я могу и руками написать ? Как в школе на бейсике писали.
Invis1ble
В функции-компараторе ты задаешь лишь алгоритм сравнения 2-х элементов, а алгоритм сортировки задан в интерпретаторе javascript. При вычитании одного значения из другого получается число либо меньше, либо больше либо равное нулю, на основании результата алгоритм сортировки перемещает элементы в массиве.

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

SoMeOnE
Сапсибо, теперь все понятно.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.