|
@@ -508,16 +508,18 @@ var arrayOfNumbers = [4,18,10,2,-1,100, 0, 0.5];
|
|
|
arrayOfNumbers.sort(); //сортирует, используя обычное строковое сравнение `<` и `>`
|
|
|
|
|
|
function numberSort(a, b){
|
|
|
- return a > b ? 1 : -1;
|
|
|
+ var result = a > b ? 1 : -1;
|
|
|
+ console.log("Нас вызвали для сравнения " + a + " и " + b + ". Результат будет " + result);
|
|
|
+ return result;
|
|
|
}
|
|
|
arrayOfNumbers.sort(numberSort); //сортировка по числовому значению
|
|
|
```
|
|
|
|
|
|
Первый `sort` выше сортирует, используя знаки `<` для элементов массива, интерпретируя элементы как строки;
|
|
|
|
|
|
-Второй `sort` принимает в качестве параметра функцию, которая вызывается внутри `sort` для некой пары сортируемых элементов. Пара выбирается согласно логике
|
|
|
+Второй `sort` принимает в качестве параметра функцию, которая вызывается многократно внутри `sort` для некой пары сортируемых элементов. Пара выбирается согласно логике
|
|
|
алгоритма сортировки; выбор же, кто из этих двух элементов больше, а кто - меньше, возлагается на переданную функцию `numberSort`, которая должна вернуть
|
|
|
-1 если `а` считается больше `b` и -1 в обратном случае. В случае равенства `a` и `b` - возвращается 0.
|
|
|
+1 если `а` считается больше `b` и -1 в обратном случае. В случае равенства `a` и `b` - возвращается 0, однако это можно не использовать
|
|
|
|
|
|
Таким же образом мы можем отсортировать по тому или иному критерию массив объектов (ассоциативных массивов), например:
|
|
|
|