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); }); }