第17天的實作是要運用陣列的內容進行排序,但排序內容會省略特定開頭字元(本實作的省略字元為:a
,an
, the
)。
因此本實作需透過正規表達式來進行實作,什麼是正規表達式呢?
正規表達式可以找出配對的字元,因此可以對配對出的字元進行String的處理。
首先對陣列資料進行排序sort
,排序方式是依照字元由小排到大。
const sortBands = bands.sort((a,b)=>{
return stripItem(a) > stripItem(b) ? 1 : -1
})
但此時的目標想省略特定字元,例如a
,an
, the
,因此在每一個排序的字元進行正規表達式,將特定字元給取代為空陣列並清除空白字元。
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('')
最後其結果為依照字元大小的排序並省略特定字元(a
,an
, the
)。
<ul id="bands"></ul>
正規表達式
正規表達式是被用來匹配字串中字元組合的模式。在 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}$',)
Array.