🏠 | 💻 PC | Development | JS |

Сортировка массива в JavaScript

Для сортировки массивов в JavaScript используется метод .sort.

Однако сортировка чисел происходит по первому символу, то есть 1000 меньше чем 2, похожая сортировка происходит в MS Excel

const numbers = [1,67,200, 3, 50, 400]; console.log(numbers); val = numbers.sort(); console.log(val);

Результат:

[1, 67, 200, 3, 50, 400]
[1, 200, 3, 400, 50, 67]

To сортировать по величине числа нужно добавить в sort аргумент в виде функции двух переменных

const numbers = [1,67,200, 3, 50, 400]; console.log(numbers); val2 = numbers.sort(function(x,y){     return x - y; }); console.log(val2);

Результат:

[1, 67, 200, 3, 50, 400]
[1, 3, 50, 67, 200, 400]

Что происходит при этой сортировке:

Из массива выбираются два числа, сперва обычно первое и второе.

Если функция возвращает положительное значение, то индекс первого сравниваемого элемента (числа которое x) в массиве увеличивается (оно двигается вправо).

Если функция возвравщает ноль то ничего не меняется.

Если функция возвращает отрицательное значение, то индекс первого сравниваемого элемента (числа которое x) в массиве уменьшается (оно двигается влево) а у второго увеличивается.

To наглядно в этом убедиться добавим логов

const numbers = [1,67,200, 3, 50, 400]; console.log(numbers); val2 = numbers.sort(function(x,y){ console.log(x,y,x-y); return x - y; }); console.log(val2);

Результат:

[1, 67, 200, 3, 50, 400]
67 1 66
200 67 133
3 200 -197
3 67 -64
3 1 2
50 67 -17
50 3 47
400 50 350
400 200 200
[1, 3, 50, 67, 200, 400]

Из логов видно, какие числа сравниваются.

Для наглядности можно сделать сортировку по убыванию

const numbers = [1,67,200, 3, 50, 400]; console.log(numbers); val2 = numbers.sort(function(x,y){ console.log(x,y,y-x); return y - x; }); console.log(val2);

Результат:

[1, 67, 200, 3, 50, 400]
67 1 -66
200 67 -133
3 200 197
3 67 64
3 1 -2
50 3 -47
50 67 17
400 50 -350
400 67 -333
400 200 -200
[400, 200, 67, 50, 3, 1]

Статьи о JavaScript
Development на JavaScript
Скролл вверх и вниз
Определить ширину экрана
Определить тип элемента
Mocha Framework - тестирование JavaScript
TicTacToe
Errors
Share in social media: