Durante una entrevista técnica para un rol de desarrollador completo, me encontré en una situación familiar pero inesperadamente desafiante. Todo había estado funcionando sin problemas hasta que el entrevistador me presentó una tarea que parecía simple al principio.
"¿Puede ordenar estos nombres de archivo de la forma en que aparecerían en un explorador de archivos, en orden ascendente?" Preguntaron.
pensé: "pedazo de pastel". La clasificación es una operación tan fundamental que no esperaba ningún problema. Pero tan pronto como comencé a escribir el código, presioné un enganche. Los nombres de archivo estaban por todas partes, algunos eran simples, pero otros incluían números, letras y combinaciones de ambos.
intenté usar un método de clasificación de cadena básica como:
array.sort ();
Pero esto produjo un resultado extraño. Los números se clasificaron lexicográficamente (lo que significa que "10" vendría antes de "2" porque comienza con un "1"), y las cadenas alfanuméricas mixtas no estaban en el orden correcto. Fue un desastre, y no se parecía al orden natural que ve en los exploradores de archivos.
Pude sentir el reloj marcando y la presión acumulando. Traté de trabajar a través de varias funciones de comparación personalizadas para manejar los números correctamente, pero nada parecía hacer clic.
Entonces, recordé un truco simple sobre el que había leído no hace mucho tiempo: localCompare.
LocalEcompare le permite comparar cuerdas de una manera que imita cómo los humanos ordenan las cosas. Al usarlo con la opción numérica, maneja los números como números reales en lugar de compararlos como texto. Aquí está el código que usé:
array.sort ((a, b) => a.localecompare (b, indefinido, {numérico: true, sensibilidad: 'base'}));
Esta única línea de código ordenó los nombres de archivo exactamente como lo haría un explorador de archivos: los números se ordenaron naturalmente, y las combinaciones de letras/números se manejaron sin problemas.
Tan pronto como ejecuté el código, vi el orden correcto aparecer en la pantalla. Los nombres de archivo se clasificaron perfectamente en orden ascendente, al igual que en un explorador de archivos. Sonreí al explicar la solución al entrevistador, que parecía satisfecho con cómo resolví el problema.
lo que inicialmente se sintió como un problema complicado terminó resueltos con una solución simple y elegante. Fue un recordatorio de que a veces las herramientas más efectivas son las más simples, y conocer esos pequeños trucos puede marcar la diferencia.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3