如何截取url中的键值对?

13 篇文章 0 订阅

前言:找了很长时间没有找到如何去拿正则的手法去解决这个问题.

问题描述:

有这样一个 URL:http://item.taobao.com/item.htm?a=1&b=2&c=&d=xxx&e,请写一段 JS 程序提取 URL 中的各个 GET 参数(参数名和参数个数不确定),将其按
key-value 形式返回到一个 json 结构中,如{a:’1′, b:’2′, c:”, d:’
xxx’, e:undefined}。

字符串截取

分析:地址中是有一些特定值的存在的,键值对的前面是?,键值对之间又是以&分开的,键与值之间又有=分隔
原理:利用字符串的切割,字符串向数组的转换,最后用对象来保存数据.

  var url = "http://item.taobao.com/item.htm?a=1&b=2&c=&d=xxx&e";

  function getname (url) {
      if(!/\?/.test(url)) {
          // 判断是否有?存在,即是判定键值对是否存在,
          // 在正则中?有特殊含义代表出现0或1次,所以用"\"进行转义,将其转为普通字符
          return null;
      }
      var index = url.indexOf("?") + 1;
      var str = url.substr(index);
      var arr = str.split("&");
      // var arr = url.split("?")[1].split("&");
      //上面的三句实现的效果可以并为一句
      var o = {};
      for(var i = 0; i < arr.length; i++) {
          // 之所以再次使用split方法是因为数组元素还是字符串,
          // 数组本身是没有split语法的
          var newarr = arr[i].split("=");
          o[newarr[0]] = newarr[1];
      }
      return o;
  }
  console.log(getname(url));
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值