Voy a seguir adelante y asumir que desea ordenar por el número de pieza en primer lugar, la clasificación numérica, y luego tener un lexographic secundaria (cadena) en una especie el bit después de la coma De esta forma, un valor como "11, a" terminará después de "2, a"; si solo hace una clasificación por defecto "11, a" terminará antes de "2, a". Por lo tanto:
var a = ["1,a","11,a","8,a","24,z","5,b","2,c","8,d","6,f"];
a.sort(function(a,b) {
var aparts = a.split(","),
bparts = b.split(","),
anum = +aparts[0], // convert first part to number
bnum = +bparts[0],
aletter = aparts[1],
bletter = bparts[1];
if (anum === bnum)
return aletter < bletter ? -1 : aletter === bletter ? 0 : -1;
else
return anum - bnum;
});
Resultado:
["1,a", "2,c", "5,b", "6,f", "8,a", "8,d", "11,a", "24,z"]
Qué problema tiene con [ '.Sort()'] (https://developer.mozilla.org/es/JavaScript/Reference/Global_Objects/Array/sort)? ¿La idea es hacer un orden numérico por el número primero, con un orden secundario por la siguiente letra? ¿O simplemente hacer un orden de cadena estándar en todo el texto? Es decir, cómo desea ordenar '[" 1, a "," 11, a "," 2, b "," 2, c "]' – nnnnnn
sort() funciona ... Cometí un error en mi código. – Anish
posible duplicado de [tipo natural de texto y números, JavaScript] (http://stackoverflow.com/questions/2802341/natural-sort-of-text-and-numbers-javascript) – outis