Supposons que je voulais une fonction de tri qui renvoie une copie triée du tableau entré. J'ai essayé naïvement
function sort(arr) {
return arr.sort();
}
et je l'ai testé avec cela, ce qui montre que ma sortméthode mute le tableau.
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"
J'ai aussi essayé cette approche
function sort(arr) {
return Array.prototype.sort(arr);
}
mais ça ne marche pas du tout.
Y a-t-il un moyen simple de contourner cela, de préférence un moyen qui ne nécessite pas de rouler à la main mon propre algorithme de tri ou de copier chaque élément du tableau dans un nouvel?
.sortrequiert que la thisvaleur soit le tableau, donc pour que le dernier extrait fonctionne, vous feriez .sort.call(arr)(bien que cela ne résout pas votre problème).