Vamos supor que eu queria uma função de classificação que retorne uma cópia classificada da matriz inserida. Eu tentei ingenuamente isso
function sort(arr) {
return arr.sort();
}
e eu testei com isso, o que mostra que meu sortmétodo está alterando a matriz.
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"
Eu também tentei essa abordagem
function sort(arr) {
return Array.prototype.sort(arr);
}
mas não funciona.
Existe uma maneira simples de contornar isso, preferencialmente uma maneira que não exija a rolagem manual do meu próprio algoritmo de classificação ou a cópia de todos os elementos da matriz para um novo?
.sortrequer que o thisvalor seja a matriz, portanto, para o último trecho funcionar, você faria .sort.call(arr)(embora isso não resolva o seu problema).