強迫症!一行代碼拿到url特定query的值

簡單的說一下背景,看到小夥伴給我發的項目中有一段獲取當前url特定query值的代碼,本着能寫1行代碼就不寫5行代碼的原則,我把這個獲取方法給改了一下javascript

以前的代碼以下:java

const queryArr = location.search.substring(1).split('&')
let name = ''
queryArr.forEach(item => {
  const _arr = item.split('=')

  if (_arr[0] === 'name') {
    name = _arr[1]
  }
})

花了這麼大工夫就爲了拿到query中name字段的值,其實有更簡單的方法,一行代碼就能夠搞定正則表達式


巧用正則match

咱們來看一下一行代碼怎麼拿到的數組

const name = location.search.match(/name=([^&]*)/)[1]

這裏介紹一次match方法,match方法返回一個數組,數組中索引0爲正則表達式匹配到的所有字符;
好比這裏的字符串若是爲?name=xiaoming&id=123索引0就爲'name=xiaoming'
0之後的索引爲正則表達式匹配的組,即爲()內的內容,上面只有一個組就是([^&]*),因此直接拿到就是'小明',因此上面的代碼直接拿索引1就是對應的name值;url

最後下班,又是充實的一天~~~code

相關文章
相關標籤/搜索