¿Por qué la ordenación modifica el original en este caso?
Tuve un problema que hacía que la matriz original cambiara, lo curioso es que agregararr.join("...").split("...")
parece evitar esto:
Un pequeño fondo:
my script crea y agrega cosas a unaarray
esta matriz inicializada vacía comoarr=[]
las cosas se agregan pasandoarr[index] = "..."
entonces quiero tener una copia de laarr
pero ordenado cuando hago la clasificación, el originalarr
es modificadAquí hay una versión simplificada de lo que está sucediendo:
var arr=[], sorted;
arr[0] = "hello";
arr[1] = "world";
//buggy, the original is sorted
//sorted = arr.sort(function(a,b){return (a.length-b.length);});
sorted = arr.join("improbableCollision").split("improbableCollision").sort(function(a,b){return (a.length-b.length);});
Por qué agregar.join("*").split("*")
resuelve el problema @ ¿Qué estaba causando el problema? ¿Hay alguna forma más elegante de arreglar esto?Para el script completo, marque esta jsFiddle