url的query解析

期望输出

获取到所有的 query 参数,组成一个对象。

const url = 'http://domain.com/?user=anonymous&city=chengdu'

parseParam(url)

 

结果:

{

  user:'liujiaqi',

  city: 'yichang'

}

解题分析:

1.使用 & 对字符串进行分割,得到数组

2.去掉数组第一个值 ? 前的字符

3.遍历数组获取对应的 key 和 value

                 数组类型的参数,需要判断特殊处理

                 对象类型的参数,也需要特殊处理

const parseParam = (url) => {
    // 分割URL
    let paramArrays = url.split("&");
    // 去除第一个值中的域名
    paramArrays[0] = paramArrays[0].split("?")
    paramArrays[0].shift()
    paramArrays[0] = paramArrays[0].join('?');
    console.log('paramArrays', paramArrays);
    // 定义一个空对象接收 key 和 value
    const obj = {}
    paramArrays.forEach(ele => {
        const itemArr = ele.split('=')
        let key = itemArr[0]
        let val = itemArr[1]
        let arr = []
        if (key.includes('[]')) {
            key = key.replace('[]', '')
            arr.push(val)
        } else if (val.indexOf('{') === 0) {
            val = JSON.parse(val)
        }
        obj[key] = val
        console.log('obj', obj);
    });
}

 

posted @ 2022-02-17 20:32  木木的奇奇  阅读(1100)  评论(0编辑  收藏  举报