获取url中的数据

306 阅读1分钟

将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'}