Какие знаешь иммутабельные аналоги sorted

Ответ

В JavaScript для сортировки массивов без мутации оригинала можно использовать:

  1. Spread оператор + sort():
const arr = [3, 1, 2];
const sorted = [...arr].sort(); // [1, 2, 3]
  1. Array.prototype.slice() + sort():
const sorted = arr.slice().sort();
  1. Array.from() + sort():
const sorted = Array.from(arr).sort();
  1. Для объектов можно использовать structuredClone (если нужна глубокая копия):
const sorted = structuredClone(arr).sort();

Важно помнить, что sort() изменяет исходный массив, поэтому всегда нужно сначала создать копию. Для сложных структур данных могут понадобиться дополнительные методы клонирования.

Ответ 18+ 🔞

Да ты посмотри, какие варианты подкинули, чтобы массив отсортировать, не трогая оригинал! Прямо как в том анекдоте про Герасима — либо так, либо нихуя. А тут целых четыре способа, ебать мои старые костыли!

Ну, самый популярный и модный — это через spread оператор. Выглядит элегантно, как мартышлюшка в шляпке:

const arr = [3, 1, 2];
const sorted = [...arr].sort(); // [1, 2, 3]

Взял оригинал, размазал его по новому массиву точками, и уже в этом новом делай что хочешь — хоть сортируй, хоть в бубен бей. Оригинал остаётся нетронутым, красота!

Если тебе эти три точки подозрительны, как хитрая жопа, можно по-старинке, через slice(). Ничего не передал — получил полную копию, а потом её и мучай.

const sorted = arr.slice().sort();

Третий вариант — Array.from(). Тоже создаёт новую банду из старой, чтобы разборки были отдельно.

const sorted = Array.from(arr).sort();

А вот если у тебя там не просто цифры, а объекты вложенные, или ещё какая многоэтажная хуйня — тогда уже надо клонировать поглубже. Тут на сцену выходит structuredClone, как здоровый немой татарин — молча, но делает всё на совесть.

const sorted = structuredClone(arr).sort();

Главное-то что запомнить, ёпта? Сам по себе метод sort() — он мутант. Он приходит в твой массив и начинает там всё переставлять, как мебель в квартире. А ты потом такой: "А где мой диван стоял? Блядь, всё пропало!". Поэтому правило простое: сначала скопировал — потом сортировал. Всё остальное — от лукавого, и ведёт к непредсказуемому пиздецу в коде.