把url后面的参数转化成对象的形式

例如:'?name=feizhu&from=alibaba&job=frontend&extraInfo=%7B%22a%22%3A%22b%22%2C%22c%22%3A%22d%22%7D'

===> {name:"feizhu",from:'alibaba',job:'frontend',extraInfo: {a: 'b', c: 'd'}}

思路如下:对传入的url进行切割,保留问号后的部分,并且对处理后的数据进行&符号分割。对分割的每一部分进行循环遍历,对于遍历的每一部分再进行=分割,分割后的第1项就是键的值,然后,我们对这个值进行判断,如果包含%就说明需要做解析处理后赋值给要返回的对象,利用decodeURIComponent方法就可以进行解析的,并且要JSON.parse一下,这样处理后就不是一个字符串类型的对象了(decodeURIComponent)如若不包含就不处理直接赋值给我们要返回的对象。

 const url = '?name=feizhu&from=alibaba&job=frontend&extraInfo=%7B%22a%22%3A%22b%22%2C%22c%22%3A%22d%22%7D';
    function parseQueryString(url) {
      // TODO
      var obj = {};
        var params = url.slice(1);
        var arr = (params.split('&'));
        arr.forEach((v, i) => {/*  */
          let str=v.split('=')[1]; 
          if(str.indexOf('%')===-1){
            obj[v.split("=")[0]] =v.split("=")[1];
          }else{
            obj[v.split("=")[0]] =JSON.parse(decodeURIComponent(v.split("=")[1]));
          }
         
        })
        return obj;
    }
    console.log(parseQueryString(url)); // => {name:"feizhu",from:'alibaba',job:'frontend',extraInfo: {a: 'b', c: 'd'}}

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值