js 方法截取url中路径信息,并将其转为对象(为加密专用,防止url中的val中出现=或&)

思路:

&永远会比=少,先取第一个=的下标存到数组中。
然后再继续找所有&的下标存到数组中(&不太会出现在val中,所以这里是以&为标准)。
再寻找所有出现在&后第一个=,并将其存到之前放=的数组中。
获取到了他们的下标后就好办事了,下面的看代码就行。

直接套用此方法即可

不是很简洁,可以看思路,有更好的方法可以评论告诉我,或者将博客地址发我!

urlDecode(url) {  //传入参数格式为url中"?"后面部分
console.log(url);
let dIndex = [], yIndex = [];  //建立两个空数组存放查询的=和&在字符串中的下标
dIndex.push(url.search("="))  //先将第一个=下标插入进去
for(let i = 0; i < url.length; i++) { //循环url字符串
  if(url[i] == "&") { //查询&
    yIndex.push(i); //先将所有&下标存到数组中
    for(let j = 0; j < url.length; j++) { //当查询到&后,再次循环url
      if(url[j] == "=" && j > i) {  //寻找在&后面的第一个=的下标
        dIndex.push(j); //将其插入进存放=的数组中
        break;  //找到第一个后就立刻跳出循环
      }
    }
  }
}
let val = []; //存放所有=至&之间的数据
for(let i = 0; i < dIndex.length; i++) {  //以为=肯定会比&多,所以循环=这个数组
  val.push(url.slice(dIndex[i]+1, yIndex[i]));  //截取url,两个数组中存放的下标一一对应截取
}
console.log(val, dIndex, yIndex)
let key = []; //存放key
key.push(url.slice(0, dIndex[0]));  //先将第一个key存入数组中
dIndex.splice(0, 1);  //再将第一个key删除
for(let i = 0; i < yIndex.length; i++) {  //这个随便用上面哪两个数组的循环都可,因为现在的length都一样
  key.push(url.slice(yIndex[i]+1, dIndex[i]));  //截取剩余所有的key
}
console.log(key, val, dIndex, yIndex);
let obj = {}; //创建空对象,存放数据
for(let i = 0; i < val.length; i++) { //循环哪一个都行,length都一样
  obj[key[i]] = val[i]; //将数据插入到对象中
}
console.log(obj, key, val, dIndex, yIndex);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值