Załóżmy, że chciałem funkcji sortowania, która zwraca posortowaną kopię wprowadzonej tablicy. Naiwnie tego próbowałem
function sort(arr) {
return arr.sort();
}
i przetestowałem to z tym, co pokazuje, że moja sortmetoda mutuje tablicę.
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"
Próbowałem również tego podejścia
function sort(arr) {
return Array.prototype.sort(arr);
}
ale to w ogóle nie działa.
Czy istnieje prosty sposób obejścia tego problemu, najlepiej taki, który nie wymaga ręcznego zwijania własnego algorytmu sortowania lub kopiowania każdego elementu tablicy do nowego?
.sortwymaga, aby thiswartością była tablica, więc aby ostatni fragment działał, zrobiłbyś to .sort.call(arr)(choć nie rozwiązuje to problemu).