强迫症!一行代码拿到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

相关文章
相关标签/搜索