フルスタック開発者の役割のための技術面接中に、私は慣れ親しんだ、しかし予想外に困難な状況に陥っていることに気づきました。面接官が私に、一見簡単そうに見えるタスクを提示するまでは、すべてが順調でした。
「これらのファイル名を、ファイル エクスプローラーに表示されるのと同じように昇順に並べ替えることはできますか?」彼らは尋ねました。
私は「簡単なことだ」と思いました。並べ替えは非常に基本的な操作なので、問題が発生するとは予想していませんでした。しかし、コードを書き始めてすぐに問題に遭遇しました。ファイル名はいたるところにあり、単純なものもあれば、数字、文字、およびその両方の組み合わせが含まれているものもありました。
次のような基本的な文字列ソート方法を使用してみました。
array.sort();
しかし、これは奇妙な結果をもたらしました。数字は辞書順に並べ替えられており (つまり、「1」で始まるため、「10」は「2」より前に来ます)、英数字が混在した文字列は正しい順序ではありませんでした。それは混乱していて、ファイルエクスプローラーで見られる自然な順序とはまったく似ていませんでした。
時計が刻々と進み、プレッシャーが高まっていくのが感じられました。数値を適切に処理するためにさまざまなカスタム比較関数を試してみましたが、どれもうまくいきませんでした。
そこで、私は少し前に読んだ、localeCompare という簡単なトリックを思い出しました。
localeCompare を使用すると、人間が並べ替える方法を模倣した方法で文字列を比較できます。数値オプションと一緒に使用すると、数値をテキストとして比較するのではなく、実際の数値として処理します。私が使用したコードは次のとおりです:
array.sort((a, b) => a.localeCompare(b, 未定義, { 数値: true, 感度: 'base' }));
この 1 行のコードにより、ファイル エクスプローラーとまったく同じようにファイル名が並べ替えられました。番号は自然に並べられ、文字と数字の組み合わせはシームレスに処理されました。
コードを実行するとすぐに、正しい順序が画面に表示されることがわかりました。ファイル名は、ファイル エクスプローラーと同じように、完全に昇順に並べ替えられました。私は笑顔で面接官に解決策を説明しました。面接官は私が問題を解決したことに満足しているようでした。
当初は複雑な問題のように感じられましたが、最終的にはシンプルで洗練されたソリューションで解決されました。最も効果的なツールは最もシンプルな場合もあり、それらの小さなコツを知っているだけで大きな違いが生じる可能性があることを思い出させてくれました。
以上がシンプルさのレッスン: 面接でプロのようにファイルを並べ替えるの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。