Кратко
СкопированоМетод массива to
это копия метода sort
, но, в отличие от него, не мутирует исходный массив, а возвращает новый отсортированный массив. Все undefined
элементы сортируются в конец массива.
Пример
СкопированоОтсортируем массив с числами:
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]
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]
Отсортируем массив с именами:
const names = [ 'Kirill', 'Alex', 'Denis', 'Albert', undefined, '',]const sortedNames = names.toSorted()console.log(sortedNames)// ['', 'Albert', 'Alex', 'Denis', 'Kirill', undefined]// undefined элементы будут в конце массива
const names = [ 'Kirill', 'Alex', 'Denis', 'Albert', undefined, '', ] const sortedNames = names.toSorted() console.log(sortedNames) // ['', 'Albert', 'Alex', 'Denis', 'Kirill', undefined] // undefined элементы будут в конце массива
Как пишется
СкопированоArray
, также как и Array
, может принимать в качестве аргумента функцию-компаратор: специальную функцию, определяющую порядок сортировки. Это необязательный параметр. Если функция пропущена, элементы массива конвертируются в строки и сортируются в порядке следования символов Unicode.
Как понять
СкопированоМетод to
имеет те же аргументы и работает также, как метод sort
, но отличается тем, что возвращает новый массив, а не мутирует исходный.
Использование аргумента функции-компаратора позволяет определить порядок сортировки.
Подсказки
Скопировано💡 Если нет возможности использовать метод to
, можно воспользоваться следующим кодом:
const numbers = [ 43, 6, 35, 1, 9, 7, 5, 75, 16]// Используем спред-операторconst sortedNumbers = [...numbers].sort( (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]
const numbers = [ 43, 6, 35, 1, 9, 7, 5, 75, 16 ] // Используем спред-оператор const sortedNumbers = [...numbers].sort( (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]
☝️ При сортировке массива методом to
возвращаемый массив будет содержать поверхностную копию (shallow copy) элементов, если эти элементы являются объектами. При изменении этих элементов в объекте, изменения будут видны и в исходном массиве.
const obj = {name: 'Scarlett'}const names = [ 'Kirill', 'Alex', obj, 'Denis', 'Albert', undefined, '',]const sortedNames = names.toSorted()console.log(sortedNames)// [// '', 'Albert', 'Alex', 'Denis', 'Kirill',// { name: 'Scarlett' }, undefined// ]// Меняем объектobj.name = 'Dan'// В отсортированном массиве объект также изменилсяconsole.log(sortedNames)// [// '', 'Albert', 'Alex', 'Denis', 'Kirill',// { name: 'Dan' }, undefined// ]
const obj = {name: 'Scarlett'} const names = [ 'Kirill', 'Alex', obj, 'Denis', 'Albert', undefined, '', ] const sortedNames = names.toSorted() console.log(sortedNames) // [ // '', 'Albert', 'Alex', 'Denis', 'Kirill', // { name: 'Scarlett' }, undefined // ] // Меняем объект obj.name = 'Dan' // В отсортированном массиве объект также изменился console.log(sortedNames) // [ // '', 'Albert', 'Alex', 'Denis', 'Kirill', // { name: 'Dan' }, undefined // ]