在全堆棧開發人員角色的技術訪談中,我發現自己處於熟悉但出乎意料的挑戰性情況。一切都順利進行,直到面試官向我介紹一開始很簡單的任務。
我想,“蛋糕。”排序是一個基本的操作,我沒想到會有任何麻煩。但是,一旦我開始編寫代碼,我就會遇到障礙。文件名遍布整個地方,有些很簡單,但其他文件包括兩者的數字,字母和組合。
我嘗試使用基本的字符串排序方法,例如:
array.sort();但這產生了奇怪的結果。這些數字在詞典上進行了排序(“ 10”將在“ 2”之前出現,因為它以“ 1”開頭),而混合字母數字的字符串並不是正確的順序。這是一團糟,它根本不像您在文件資源管理器中看到的自然順序。
我能感覺到時鐘滴答聲和壓力加大。我嘗試通過各種自定義比較功能來正確處理這些數字,但似乎沒有單擊。,我記得不久前我讀過的一個簡單的技巧:localecompare。
array.sort((a,b)=> a.localecompare(b,undefined,{numeric:true,sexitivity:'base'}));
這一單行代碼完全按照文件資源管理器的方式對文件名進行排序:數字是自然訂購的,並無縫處理字母/數字組合。
最初感覺像一個複雜的問題最終通過簡單,優雅的解決方案解決了。提醒人們,有時最有效的工具是最簡單的,並且知道那些小技巧可以使一切變得不同。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3