iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 17
0
Modern Web

JavaScript 30實作心得筆記系列 第 17

Day17 Sorting Band Names without articles

  • 分享至 

  • xImage
  •  

Day17 Sorting Band Names without articles

第17天的實作是要運用陣列的內容進行排序,但排序內容會省略特定開頭字元(本實作的省略字元為:aanthe)。

因此本實作需透過正規表達式來進行實作,什麼是正規表達式呢?

正規表達式可以找出配對的字元,因此可以對配對出的字元進行String的處理。

首先對陣列資料進行排序sort,排序方式是依照字元由小排到大。

const sortBands = bands.sort((a,b)=>{
    return stripItem(a) > stripItem(b) ? 1 : -1
  })

但此時的目標想省略特定字元,例如aanthe,因此在每一個排序的字元進行正規表達式,將特定字元給取代為空陣列並清除空白字元。

function stripItem(bandName){
    const exp = /^(a |the |an )/i
    return bandName.replace(exp, '').trim()
  }

之後在元素ul中加入陣列資料構成的li元素,

document.querySelector('#bands').innerHTML =
    sortBands.map(band => {
      return `<li>${band}</li>`
    })
    .join('')

最後其結果為依照字元大小的排序並省略特定字元(aanthe)。

Html

<ul id="bands"></ul>

Javascript

正規表達式
正規表達式是被用來匹配字串中字元組合的模式。在 JavaScript 中,正規表達式也是物件,這些模式在 RegExp 的 exec 和 test 方法中,以及 String 的 match、replace、search、split 等方法中被運用。
[1][2]

const exp = /pattern/flag 
//pattern為比較規則 flag為比較方式

// 判斷手機號碼
const exp1 = /^[A-Za-z][12]\d{8}$/
const exp2 = new RegExp('^[A-Za-z][12]\d{8}$',)

tags: Array.

上一篇
Day16 CSS Text Shadow Mouse Move Effect
下一篇
Day18 Tally String Times with Reduce
系列文
JavaScript 30實作心得筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言