diff --git a/js/array-tosorted/index.md b/js/array-tosorted/index.md new file mode 100644 index 0000000000..e0acd65e54 --- /dev/null +++ b/js/array-tosorted/index.md @@ -0,0 +1,104 @@ +--- +title: "`.toSorted()`" +description: "Сортирует элементы массива так же, как и метод sort(), но возвращает новый массив." +authors: + - alexafcode +related: + - js/arrays + - js/array-toSorted +tags: + - doka +--- + +## Кратко + +Метод массива `toSorted()` это копия метода `sort()`, но, в отличие от него, не мутирует исходный массив, а возвращает новый отсортированный массив. Все `undefined` элементы сортируются в конец массива. + +## Пример + +Отсортируем массив с числами: + +```js +const numbers = [43, 6, 35, 1, 9, 7, 5, 75, 16]; + +const sortedNumbers = numbers.toSorted((a, b) => a - b); + +console.log(numbers); +// [43, 6, 35, 1, 9, 7, 5, 75, 16]; +console.log(sortedNumbers); +// [1, 5, 6, 7, 9, 16, 35, 43, 75] +``` + +Отсортируем массив с именами: + +```js +const names = [ + 'Kirill', + 'Alex', + 'Denis', + 'Albert', + undefined, + '', +]; + +const sortedNames = names.toSorted(); +console.log(sortedNames) +// ['', 'Albert', 'Alex', 'Denis', 'Kirill', undefined] +// undefined элементы будут в конце массива. +``` + +## Как пишется + +`Array.toSorted`, также как и `Array.sort`, может принимать в качестве аргумента функцию-компаратор: специальную функцию, определяющую порядок сортировки. Это необязательный параметр. Если функция пропущена, элементы массива конвертируются в строки и сортируются в порядке следования символов Unicode. + +## Как понять + +Метод `toSorted()` имеет те же аргументы и работает также, как метод `sort()`, но отличается тем, что возвращает новый массив, а не мутирует исходный. + +Использование аргумента функции-компаратора позволяет определить порядок сортировки. + +## Подсказки + +💡 Если нет возможности использовать метод `toSorted()`, можно воспользоваться следующим кодом: + +```js +const numbers = [43, 6, 35, 1, 9, 7, 5, 75, 16]; + +const sortedNumbers = [...numbers].sort((a, b) => a - b); +// используем spread оператор + +console.log(numbers); +// [43, 6, 35, 1, 9, 7, 5, 75, 16]; +console.log(sortedNumbers); +// [1, 5, 6, 7, 9, 16, 35, 43, 75] +``` + + diff --git a/people/alexafcode/readme.md b/people/alexafcode/readme.md new file mode 100644 index 0000000000..d2fabf19b3 --- /dev/null +++ b/people/alexafcode/readme.md @@ -0,0 +1,6 @@ +--- +name: 'Алексей Фомин' +url: https://github.com/alexafcode +--- + +Просто разработчик.