Кратко
СкопированоМетод массива 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
// ]