在全端開發人員角色的技術面試中,我發現自己處於一個熟悉但出乎意料的挑戰的境地。一切都很順利,直到面試官向我提出了一個乍看很簡單的任務。
「你能按照檔案瀏覽器中顯示的方式對這些檔案名稱進行升序排序嗎?」他們問。
我想,「小菜一碟。」排序是一個非常基本的操作,我沒想到會有任何麻煩。但當我開始編寫程式碼時,我遇到了障礙。檔案名稱遍布各處,有些很簡單,但其他則包含數字、字母以及兩者的組合。
我嘗試使用基本的字串排序方法,例如:
array.sort();
但這產生了一個奇怪的結果。這些數字按字典順序排序(意味著“10”將出現在“2”之前,因為它以“1”開頭),並且混合字母數字字串的順序不正確。這是一團糟,而且根本不像你在文件瀏覽器中看到的自然順序。
我感覺到時鐘在滴答作響,壓力越來越大。我嘗試使用各種自訂比較函數來正確處理數字,但似乎沒有任何效果。
然後,我想起了不久前讀到的一個簡單技巧:localeCompare。
localeCompare 允許您以模仿人類排序方式的方式比較字串。透過將其與數字選項一起使用,它將數字作為實際數字處理,而不是將它們作為文字進行比較。這是我使用的程式碼:
array.sort((a, b) => a.localeCompare(b, undefined, { numeric: true,sensitivity: 'base' }));
這行程式碼對檔案名稱進行排序,就像檔案瀏覽器一樣:數字自然排序,字母/數字組合無縫處理。
當我運行程式碼時,我看到螢幕上出現了正確的順序。檔案名稱按升序完美排序,就像在檔案總管中一樣。當我向面試官解釋解決方案時,我微笑著,面試官似乎對我解決問題的方式感到滿意。
最初感覺很複雜的問題最終透過一個簡單、優雅的解決方案得到了解決。這提醒我們,有時最有效的工具往往是最簡單的,了解這些小技巧可以發揮重要作用。
以上是簡單的一課:在面試中像專業人士一樣對文件進行排序的詳細內容。更多資訊請關注PHP中文網其他相關文章!