抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >

处理query请求是页面传参时必备的操作,许多库已经有内置的处理方法,但还是自己手动实现一下吧。

使用正则表达式匹配参数:

[?&]是指从区间范围内(?&)

[^?&]是指除了区间(?&)

+是一个或多个

每个键值对中间等号连接,直接写

const url = "https://xxx.com/user?id=523666&page=favlist"
const reg = /[?&][^?&]+=[^?&]+/g
const found = url.match(reg)	// ['?id=523666','&page=favlist']
const result = found.reduce((previousValue, currentValue) => {
    // 去除前面的连接符,以等号分割键值对
    const obj = currentValue.substring(1).split("=")
    const key = obj[0]
    previousValue[key] = obj[1]
    return previousValue
},{})
console.log(JSON.stringify(result, null, 2))
// output:
/* 
{
  "id": "523666",
  "page": "favlist"
}
*/

关于substring:

stringObject.substring(start,stop)
参数 描述
start 必需。一个非负的整数,规定要提取的子串的第一个字符在 stringObject 中的位置。
stop 可选。一个非负的整数,比要提取的子串的最后一个字符在 stringObject 中的位置多 1。如果省略该参数,那么返回的子串会一直到字符串的结尾。

返回值

一个新的字符串,该字符串值包含 stringObject 的一个子字符串,其内容是从 start 处到 stop-1 处的所有字符,其长度为 stopstart

——摘自菜鸟教程

评论