前端开发中经常会对url进行解析加以使用,在此整理下相关需求实现代码。
1. 提供url参数,也就是location.search的值如下:
var url = 'http://www.baidu.com?name=xiaohei&bir=1989&sex=men#abc';
2. 将参数解析成此种对象规格:
Object {name: "xiaohei", bir: "1989", sex: "men"}
相应的函数编写以及调用如下:
function analyseUrl(url){
var obj = {},
arr = [];
if(url.indexOf('?') != -1){
var opt = url.split('?');
var str = opt[1];
arr = str.split('&');
var arrLast = arr[arr.length - 1];
if(arrLast.indexOf('#') != -1){
arr[arr.length - 1] = arrLast.substr(0, arrLast.indexOf('#'));
}
for(var i = 0; i < arr.length; ++i){
var para = arr[i].split('=');
obj[para[0]] = para[1];
}
}
return obj;
}
var paraObj = analyseUrl(url);
返回的对象即包含url参数名和对应的参数值,如果仅仅是需要参数数据使用于编码中,那么这个对象内容可以满足对参数的使用需求。
3. 如果需要重构url,需求如对相关参数进行重新赋值,则添加以下步骤:
提供参数对照映射表
var paraList = {"name" : "dahei", "age" : "12", "bir" : "1989"};
对返回的对象进行参数值重构
for(var j in paraList){
paraObj[j] = paraList[j];
}
- 重新拼接url参数字符串
var newPara = '';
for(var k in paraObj){
newPara += k + '=' + paraObj[k] + '&';
}
newPara = newPara.substr(0, newPara.length - 1);
至此,便可以构造如下url参数newPara:
name=dahei&bir=1989&sex=men&age=12