Нужно скопировать и отсортировать массив исходя из заданного

У нас есть массив строк arr. Нужно получить отсортированную копию, но оставить arr неизменённым. Функция copySorted(arr), должна возвращать такую копию. Хотел бф получить какие-то наводки, поскольку первое, что приходит в голову здесь, это естественно функция sort, но это не совсем то, что нужно очевидно)

let arr = ["HTML", "JavaScript", "CSS"];

let sorted = copySorted(arr);

alert( sorted ); // CSS, HTML, JavaScript
alert( arr ); // HTML, JavaScript, CSS (без изменений)

Ответы (3 шт):

Автор решения: meine

оно?

let arr = ["HTML", "JavaScript", "CSS"];

function copySorted(array) {
  const copiedArray = [...array];
  
  return copiedArray.sort((a, b) => a.length - b.length);
}

let sorted = copySorted(arr);

alert( sorted ); // CSS, HTML, JavaScript
alert( arr ); // HTML, JavaScript, CSS (без изменений)

→ Ссылка
Автор решения: fortavey
function copySorted(arr){
    return [...arr].sort();
}
→ Ссылка
Автор решения: Игорь Новоженин
var arr = ['HTML', 'JavaScript', 'CSS'];

function copySorted(arr) {
    return arr.slice().sort();
}

var sorted = copySorted(arr);

console.log (sorted);
console.log(arr);

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

→ Ссылка