1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- // 传统方式
- function query(name) {
- const search = location.search.substr(1)
- // search: 'a=10&b=20&c=30'
- const reg = new RegExp(`(^|&)${name}=([^&]*)(&|$)`, 'i')
- const res = search.match(reg)
- console.log(res)
- // 数组第一个是完全匹配,第二个是匹配的第一个括号里面的内容,第3个是匹配的第2个括号里面的内容,第4个是匹配的第3个括号里面的内容,
- // ["&b=20&", "&", "20", "&"]
- if(res === null) {
- return null
- }
- return res[2]
- }
- console.log(query('b'))
- // URLSearchParams
- function query2(name) {
- const search = location.search
- const p = new URLSearchParams(search)
- return p.get(name)
- }
- console.log(query2('b'))
- // 传统方式,分析search
- function queryToObj() {
- const res = {}
- const search = location.search.substr(1) // 去掉前面的?
- search.split('&').map(paramStr => {
- const arr = paramStr.split('=')
- res[arr[0]] = arr[1]
- })
- return res
- }
- console.log(queryToObj()) // {a: "10", b: "20", c: "30"}
- // 使用URLSearchParams
- function queryToObj2(){
- const res = {}
- const pList = new URLSearchParams(location.search)
- pList.forEach((val, key) => {
- res[key] = val
- })
- return res
- }
- console.log(queryToObj2()) // {a: "10", b: "20", c: "30"}
|