Question
输入:
例如:url = https://www.youzan.com?name=coder&age=20&callback=https%3A%2F%2Fyouzan.com%3Fname%3Dtest&list[]=a&json=%7B%22str%22%3A%22abc%22,%22num%22%3A123%7D
输出:
{
name: "coder",
age: "20",
callback: "https://youzan.com?name=test",
list: ["a"],
json: {
str: 'abc',
num: 123
}
}
key factors analysis【看似容易,还是遇到几个坑】
1. url中部分特殊符号乱码,需要进行解码处理。
这里用到JavaScript自带的decodeURIComponent(url)方法进行解码,也可以自写decode函数。
[’%3A’ => ‘:’], [’%2F%2F’ => ‘//’] [’%3F’ => ‘?’] [’%3D’ => ‘=’]
//url = https://www.youzan.com?name=coder&age=20&callback=https%3A%2F%2Fyouzan.com%3Fname%3Dtest&list[]=a&json=%7B%22str%22%3A%22abc%22,%22num%22%3A123%7D
url = decodeURIComponent(url);
//url = https://www.youzan.com?name=coder&age=20&callback=https://youzan.com?name=test&list[]=a&json={"str":"abc","num":123}
2. 不能用常规的‘?’分离出参数部分
因为callback=https://youzan.com ? name=test 也包含问号,会导致分割出错。那么更合理的分割方式是直接用每个参数连接符号‘&’分割每个参数。
let paramArrays = url