Maison > Article > interface Web > Une leçon de simplicité : trier les fichiers comme un pro lors d'un entretien
Lors d'un entretien technique pour un rôle de développeur full-stack, je me suis retrouvé dans une situation familière mais étonnamment difficile. Tout s'était bien passé jusqu'à ce que l'intervieweur me présente une tâche qui semblait simple au début.
« Pouvez-vous trier ces noms de fichiers comme ils apparaîtraient dans un explorateur de fichiers, par ordre croissant ? » ils ont demandé.
Je me suis dit : « C'est du gâteau ». Le tri est une opération tellement fondamentale que je ne m'attendais à aucun problème. Mais dès que j’ai commencé à écrire le code, j’ai rencontré un problème. Les noms de fichiers étaient partout, certains étaient simples, mais d'autres incluaient des chiffres, des lettres et des combinaisons des deux.
J'ai essayé d'utiliser une méthode de tri de chaîne de base telle que :
array.sort();
Mais cela a produit un résultat étrange. Les nombres ont été triés lexicographiquement (ce qui signifie que « 10 » viendrait avant « 2 » car il commence par un « 1 »), et les chaînes alphanumériques mixtes n'étaient pas dans le bon ordre. C’était un désastre et cela ne ressemblait pas du tout à l’ordre naturel que vous voyez dans les explorateurs de fichiers.
Je pouvais sentir le temps qui passait et la pression monter. J'ai essayé d'utiliser diverses fonctions de comparaison personnalisées pour gérer correctement les chiffres, mais rien ne semblait cliquer.
Ensuite, je me suis souvenu d'une astuce simple que j'avais lue il n'y a pas si longtemps : localeCompare.
localeCompare vous permet de comparer des chaînes d'une manière qui imite la façon dont les humains trient les choses. En l'utilisant avec l'option numérique, il traite les nombres comme des nombres réels plutôt que de les comparer sous forme de texte. Voici le code que j'ai utilisé :
array.sort((a, b) => a.localeCompare(b, undefined, {numeric : true, sensibilité : 'base' }));
Cette seule ligne de code triait les noms de fichiers exactement comme le ferait un explorateur de fichiers : les nombres étaient classés naturellement et les combinaisons lettre/chiffre étaient gérées de manière transparente.
Dès que j'ai exécuté le code, j'ai vu le bon ordre apparaître à l'écran. Les noms de fichiers étaient parfaitement triés par ordre croissant, tout comme dans un explorateur de fichiers. J'ai souri en expliquant la solution à l'intervieweur, qui semblait satisfait de la façon dont j'ai résolu le problème.
Ce qui semblait initialement être un problème compliqué a fini par être résolu par une solution simple et élégante. Cela nous a rappelé que parfois les outils les plus efficaces sont les plus simples, et connaître ces petites astuces peut faire toute la différence.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!