Один из используемых методов манипуляций массива, которые всегда бросают меня, был методом сортировки ().
Я всегда обнаружил, что его синтаксис довольно запутанный, данные элементы в смещении массива влево или вправо, основанные на результатах вычисления, являющегося положительными или отрицательными (или ноль).
Это может быть, просто будет я, но я надеюсь, что этот пост очистит любую общую путаницу по этому вопросу через некоторые простые и лаконичные примеры, которые вы всегда можете вернуться к использованию в качестве ориентира, если у вас память так же коротко.
Важный Sidenote: Важно отметить, что сортировка () мутирует оригинальный массив.
Основы
Сортировка () Один сортирует массивы в алфавитном порядке, и численно по умолчанию.
Однако, как следует отметить, что это требует первой цифры чисел для такого рода, не обращая внимания на вторую цифру, если он не должен. Строки также отсортированы по их первому персонажу.
const teams = ['Arsenal', 'Manchester Utd', 'Liverpool', 'Chelsea']; teams.sort(); // ['Arsenal', 'Chelsea', 'Liverpool', 'Manchester Utd'] teams.reverse(); // ['Manchester Utd', 'Liverpool', 'Chelsea', 'Arsenal'] const numbers = [3, 23, 12]; numbers.sort(); // --> 12, 23, 3 numbers.reverse(); // --> 3, 23, 12
Некоторые дополнительные предостережения заключаются в том, что строки сортируются с заглавными буквами, принимающими наивысший приоритет сортировки после номеров. Это можно увидеть в смешанных массивах, таких как следующее:
const numbersAndStrings = ['Arsenal', 12, 'Chelsea', 10, 'arsenal', 32, 1, 'chelsea']; numbersAndStrings.sort(); // --> [ 1, 10, 12, 32, 'Arsenal', 'Chelsea', 'arsenal', 'chelsea' ]
Итак, основные правила:
- Числа сначала (цифра по цифре)
- Заглавные буквы Далее (Char by Char)
- Строчные буквы в последний раз (Char by char)
Хотя эти правила ясны, они на самом деле не добавляют для реальных случаев использования реального использования, потому что для значений сортировки по цифрным средствам 100 будет отсортирована до 25 …
Что если мы хотим по-настоящему убыванию?
Функция сравнения
Задача ответа на вышеупомянуту проходит в функции для метода сортировки (). Это обычно называется функцией сравнения, когда речь идет о методе Sort ().
Как это работает?
Вы проходите в функции с двумя аргументами (A и B), а затем расчет. Результатом того, что расчет должен быть положительным или отрицательным значением или ноль.
- Если результат отрицательный, а сортируется до б.
- Если результат положительный, B отсортирован до.
- Если результат 0, ничего не меняется.
Как это выглядит?
Возьмите ниже пример:
const numbersWithCompareAscending = [3, 23, 12]; numbersWithCompareAscending.sort((a, b) => { return a - b; }); console.log(numbersWithCompareAscending); // --> 3, 12, 23
Сортировка () принимает функцию с аргументами «A» и «B» и рассчитывает «A – B».
Так что это следует следующим образом:
- Шаг 1: A (который 3) вычитает B (что 23) = -20 (Отрицательный результат, так что (3) остается слева.
- Шаг 2: A (который сейчас 23) вычитает B (что является (положительный результат Таким образом, (23) вакансии с B (12).
- Шаг 3: Наш сортированный массив сейчас [3, 12, 23]
Вы можете добиться обратного (по убывающей) порядок сортировки, просто вернувшись B – A вместо A – б.
Оригинал: “https://dev.to/apetrides/js-array-sort-346k”