Инженерный стек
Сортируйте массивы без скрытых изменений!
У JS есть неприятная особенность: sort() изменяет исходный массив. Это легко пропустить, особенно когда массив пришёл из состояния приложения, кеша или аргументов функции.
const scores = [30, 10, 20];
const sorted = scores.sort((a, b) => a - b);
console.log(scores); // [10, 20, 30]{}
Для таких случаев существует toSorted(). Он возвращает новый отсортированный массив, оставляя исходный нетронутым:
const scores = [30, 10, 20];
const sorted = scores.toSorted((a, b) => a - b);
console.log(scores); // [30, 10, 20]
console.log(sorted); // [10, 20, 30]{}
И это не единственный такой метод. Современный JavaScript поддерживает целое семейство операций без изменения исходного массива:
items.toReversed(); // Развернуть
items.toSpliced(1, 2); // Удалить два элемента
items.with(0, newItem); // Заменить элемент
Все он{}
и возвращают новый массив, сохраняя оригинал. Что полезно при работе с неизменяемым состоянием и данными, которые используются в нескольких местах.
🔥 Если исходные данные должны оставаться неизменными, используйте toSorted(), toReversed(), toSpliced() и with() вместо изменяющих методов. Если у вас установлено приложение,
вы можете сразу перейти в канал