Tengo dificultades para encontrar una solución.
Tengo una matriz similar a esta.
// Original array const orig_array = ["2", "10", "01A", "1A", "02B", "1","03B"]; // The sorted array needs to be like this. sorted_array = ["1", "1A", "01A", "2", "02B", "03B", "10"];He intentado escribir una función de clasificación personalizada como esta, pero no puedo encontrar una solución. Agradezco cualquier ayuda.
const orig_array = ["2", "10", "01A", "1A", "02B", "1","03B"]; const sorted_array = orig_array.sort((a, b) => { if (a - b) { return a - b; } if (a.localeCompare(b) === -1) { return a.length - b.length; } else { return 1; } }); console.log(sorted_array);Primero puede aplicar parseInt a ambas cadenas para obtener las primeras partes numéricas y restarlas. Si las partes numéricas son iguales, resta las longitudes.
const orig_array = ["2", "10", "01A", "1A", "02B", "1","03B"]; console.log(orig_array.sort((a,b)=>parseInt(a)-parseInt(b)||a.length-b.length));