Durante uma entrevista técnica para uma função de desenvolvedor de pilha completa, eu me encontrei em uma situação familiar, mas inesperadamente desafiadora. Tudo estava indo bem até o entrevistador me apresentar uma tarefa que parecia simples no começo.
"Você pode classificar esses nomes de arquivos da maneira que eles aparecem em um explorador de arquivos, em ordem crescente?" Eles perguntaram.
pensei: "Piece de bolo". A classificação é uma operação tão fundamental que eu não esperava nenhum problema. Mas assim que comecei a escrever o código, bati em um problema. Os nomes de arquivos estavam em todo o lugar, alguns eram simples, mas outros incluíam números, letras e combinações de ambos.
tentei usar um método básico de classificação de string como:
Array.sort ();
Mas isso produziu um resultado estranho. Os números foram classificados lexicograficamente (o que significa que "10" viria antes de "2" porque começa com um "1"), e as cordas alfanuméricas mistas não estavam na ordem correta. Foi uma bagunça e não se parece com a ordem natural que você vê nos exploradores de arquivos.
eu podia sentir o relógio correndo e a pressão aumentando. Tentei trabalhar com várias funções de comparação personalizadas para lidar com os números corretamente, mas nada parecia clicar.
Então, lembrei -me de um truque simples que eu tinha lido há pouco tempo: localecompare.
localCompare permite comparar strings de uma maneira que imite como os humanos classificam as coisas. Ao usá -lo com a opção numérica, ele lida com os números como números reais, em vez de compará -los como texto. Aqui está o código que usei:
Array.sort ((a, b) => a.localecompare (b, indefinido, {numérico: true, sensibilidade: 'base'}));
Essa única linha de código classificou os nomes de arquivos exatamente como um explorador de arquivos: os números foram ordenados naturalmente e as combinações de cartas/números foram tratadas perfeitamente.
Assim que executei o código, vi a ordem correta aparecer na tela. Os nomes de arquivos foram perfeitamente classificados em ordem crescente, como em um explorador de arquivos. Eu sorri enquanto expliquei a solução para o entrevistador, que parecia satisfeito com a forma como resolvi o problema.
O que inicialmente parecia um problema complicado acabou sendo resolvido com uma solução simples e elegante. Foi um lembrete de que às vezes as ferramentas mais eficazes são as mais simples, e saber que esses pequenos truques podem fazer toda a diferença.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3