🏠 | 💻 PC | Программирование | 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]

Чтобы сортировать по величине числа нужно добавить в 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) в массиве уменьшается (оно двигается влево) а у второго увеличивается.

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

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
Программирование на JavaScript
Скролл вверх и вниз
Mocha Framework - тестирование JavaScript

Поиск по сайту

Контакты и сотрудничество:
Рекомендую наш хостинг beget.ru
Пишите на info@urn.su если Вы:
1. Хотите написать статью для нашего сайта или перевести статью на свой родной язык.
2. Хотите разместить на сайте рекламу, подходящуюю по тематике.
3. Реклама на моём сайте имеет максимальный уровень цензуры. Если Вы увидели рекламный блок недопустимый для просмотра детьми школьного возраста, вызывающий шок или вводящий в заблуждение - пожалуйста свяжитесь с нами по электронной почте
4. Нашли на сайте ошибку, неточности, баг и т.д. ... .......
5. Статьи можно расшарить в соцсетях, нажав на иконку сети: