将url中的数据取出并转化为json格式,没有值的默认为true,相同的key转化为数组
按照自己的想法写的,如果有更好的方法,请告诉我,菜鸟也有极强的求(xue)生(xi)欲(笑... ...)
let URL = 'http://www.juejin.com/test?a=0&b=1&b=2&c=%25E5%2593%2588%25E5%2593%2588%25E5%2593%2588&d'
function getJson(url) {
if(typeof(url) !== 'string') return 'Uncaught TypeError'
let str = url.split("?")[1],//"a=0... ...&d"
items = str.split("&"),//['a=0','b=2'... ... 'd']
obj = {},
arr, key, val,
i = 0,
l = items.length
for (; i < l; i++) {
arr = items[i].split("=")//['a','0']... ... //['d','true']
arr.length < 2 ? arr.push(true) : ""//如果只有key没有val的时候,赋值为true。['d',true]
key = arr[0]
val = decodeURI(decodeURI(arr[1]))//中文
obj[key] ?//obj中是否存在这个key
(typeof obj[key] !== Array ?//如果已存在这个key且不是数组
obj[key] = [obj[key]] ://转化成数组
"",
obj[key].push(val)) ://添加数据
obj[key] = val//如果不存在这个key,直接赋值
}
return obj;
}
getJson(URL);//{a:'0', b:['1','2'], c:'哈哈哈', d:'true'}