Supongamos que quería una función de clasificación que devuelve una copia ordenada de la matriz ingresada. I ingenuamente intentado esto¿Cómo se puede ordenar una matriz sin mutar la matriz original?
function sort(arr) {
return arr.sort();
}
y lo probé con esto, lo que demuestra que mi método sort
está mutando la 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"
También probé este enfoque
function sort(arr) {
return Array.prototype.sort(arr);
}
pero no funciona en absoluto.
¿Hay una manera directa de evitar esto, preferiblemente de una manera que no requiera laminar manualmente mi propio algoritmo de clasificación o copiar cada elemento de la matriz en uno nuevo?
crear una copia profunda de la matriz y ordenarla en su lugar. – evanmcdonnal
@evanmcdonnal Una copia superficial podría ser lo suficientemente buena si se quiere todo es un reordenamiento y no un duplicado de cada elemento en el conjunto. – Kekoa
'.sort' requiere que el valor' this' sea la matriz, por lo que para que el último fragmento funcione, '.sort.call (arr)' (aunque no resuelve el problema). – pimvdb