Supponiamo che volessi una funzione di ordinamento che restituisca una copia ordinata dell'array immesso. L'ho provato ingenuamente
function sort(arr) {
return arr.sort();
}
e l'ho provato con questo, il che dimostra che il mio sortmetodo sta mutando l'array.
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"
Ho anche provato questo approccio
function sort(arr) {
return Array.prototype.sort(arr);
}
ma non funziona affatto.
Esiste un modo semplice per aggirare questo, preferibilmente un modo che non richiede il roll-hand del mio algoritmo di ordinamento o la copia di ogni elemento dell'array in uno nuovo?
.sortrichiede che il thisvalore sia l'array, quindi per far funzionare l'ultimo snippet .sort.call(arr)(anche se non risolve il problema).