Припустимо, я хотів функцію сортування, яка повертає відсортовану копію введеного масиву. Я наївно спробував це
function sort(arr) {
return arr.sort();
}
і я перевірив це за допомогою цього, що показує, що мій sortметод мутує масив.
var a = [2,3,7,5,3,7,1,3,4];
sort(a);
alert(a); //alerts "1,2,3,3,3,4,5,7,7"
Я також спробував такий підхід
function sort(arr) {
return Array.prototype.sort(arr);
}
але це зовсім не працює.
Чи є прямий спосіб цього, переважно спосіб, який не потребує ручного прокатування мого власного алгоритму сортування або копіювання кожного елемента масиву в новий?
.sortпотрібно, щоб thisзначення було масивом, тому для останнього фрагмента ви працюєте .sort.call(arr)(хоча це не вирішує вашу проблему).