tgoop.com/prog_way_blog/213
Create:
Last Update:
Last Update:
Метод массива toSorted
Относительно новые фишки языка уже просачиваются на собеседования, поэтому ближайшие посты будут посвящены разбору нововведений спецификации ECMAScript 2023. В этой спецификации было представлено много новых методов, которые позволяют упростить работу с массивами. toSorted
— это метод массива, который работает аналогично уже давно существующему методу sort
, а именно, как и ожидается, сортирует массив.
Проблема обычного метода sort
заключается в том что его вызов мутирует исходный массив. Это может вызвать неудобства и проблемы в тех местах, где нам запрещено менять исходные данные, например при обработке экшенов в redux
.
const nums = [1, 4, 3, 2]
nums.sort()
console.log(nums) // [1, 2, 3, 4]
В этом примере в консоли мы увидим уже отсортированный массив, несмотря на то, что, казалось бы, никак не обрабатывали результат вызова метода. На самом деле, метод
sort
напрямую изменяет массив, для которого был вызван. Для решения такой проблемы часто можно видеть следующий хак:const nums = [1, 4, 3, 2]
const newNums = [...nums].sort()
console.log(nums) // [1, 4, 3, 2]
console.log(newNums) // [1, 2, 3, 4]
И как раз для упрощения этой операции в спецификации и появился новый метод —
toSorted
. Его работу в чём то можно сравнить с методами map
и filter
, а именно в том, что все эти метода совершают какие-то действия только над копией массива не затрагивая изначальный, при это возвращая полностью новый массив.На примере это будет выглядеть следующим образом:
const nums = [1, 4, 3, 2]
const newNums = nums.toSorted()
console.log(nums) // [1, 4, 3, 2]
console.log(newNums) // [1, 2, 3, 4]
Не сказал бы, что что-то невероятно сильно изменилось, но такая запись точно безопаснее, проще и визуально выглядит гораздо легче.
Аналогичные замены появились и для методов
reverse
и splice
. Для них еще один небольшой пример:const nums = [1, 2, 3, 4];
const reversed = nums.toReversed();
console.log(nums) // [1, 2, 3, 4]
console.log(reversed) // [4, 3, 2, 1]
const nums = [1, 2, 3, 4];
const spliced = nums.toSpliced(0, 1);
console.log(nums) // [1, 2, 3, 4]
console.log(spiced) // [2, 3, 4]
Это не все нововведения ECMAScript 2023, но это их весомая часть. Разбор остальных нововведений будет в скором времени.
Спасибо за прочтение, это важно для меня ❤️
#javascript #theory #web #data
BY progway — программирование, IT

Share with your friend now:
tgoop.com/prog_way_blog/213