iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 18
0
自我挑戰組

JS30自我學習筆記系列 第 18

第十七堂 - Sort Without Articles

  • 分享至 

  • xImage
  •  

今天的實作相當簡單,就是對內容為字串的Array做字頭排序,但要忽略article(英文小教室:這邊的article不是文章,而是「冠詞」,像是the、a、an等)。範例如下:

Imgur

邏輯流程

  1. 將Array中的字串的特定冠詞刪除
  2. 對Array做排序
  3. 放進HTML列表

課程重點

  1. 刪除特定冠詞:練習中是利用前面課程提過的regular exression來在字串中找出特定的pattern,這邊我們要找的就是the、a、an。

    function strip(bandName) {
      return bandName.replace(/^(a |the |an )/i, '').trim();
    }
    

    這裡的/^(a |the |an )/i是找出位在開頭的a或the或an,而為了不影響字串本身就含有這些特定字母,像是Array中的"Anywhere But Here"是An開頭但他不是冠詞,所以在regular exression中我們尋找的冠詞後面其實是要空格,來找出真的冠詞。那最後的i是代表不分大小寫,不論是The、the、A、a...都會被找出來。

    那刪除的部分我們是用replace(),將上面找到的冠詞用空字串來取代,達到刪除的效果。

  2. sort():本實作的重點,是Array的函式,可用來做字母的排序或數字大小排序,前面課堂也有用過,範例如下

    bands.sort((a, b) => strip(a) > strip(b) ? 1 : -1);
    

    這邊老師也是用前面課程常用的三元運算子,也就是?:來做if else的判斷。如果刪除冠詞後的字串大於刪除冠詞後的下一個字串,就回傳1,否則回傳-1。


上一篇
第十六堂 - Mouse Move Shadow
下一篇
第十八堂 - Adding Up Times with Reduce
系列文
JS30自我學習筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言