Сортировка массива в 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 y - x; }); 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
Массивы
Сортировка массива

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

Подпишитесь на Telegram канал @aofeed чтобы следить за выходом новых статей и обновлением старых

Перейти на канал

@aofeed

Задать вопрос в Телеграм-группе

@aofeedchat

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