强迫症!一行代码拿到url特定query的值
简单的说一下背景,看到小伙伴给我发的项目中有一段获取当前url特定query值的代码,本着能写1行代码就不写5行代码的原则,我把这个获取方法给改了一下
之前的代码如下:
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值;
最后下班,又是充实的一天~~~