这是我的网址:https://www.google.com/?Field1=A&Value1=A1&Field2=B&Value2=B1
我使用下面的脚本来获取查询字符串:
var arr=[];
arr = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
给出了以下输出
["Field1=A", "Value1=A1", "Field2=B", "Value2=B1"]
但我希望将结果作为键值对,如下所示:
A: A1
B: B1
我该怎么做?
答案 0 :(得分:2)
假设字段和值的顺序相同,字段和值将始终存在于对中。
尝试以下
var obj = {};
for (var i = 0; i < arr.length; i=i+2) {
obj[arr[i].split("=")[1]] = arr[i+1].split("=")[1];
}
console.log(obj);
答案 1 :(得分:1)
尝试此功能:
function getUrlParams(url) {
var ret = {};
url
.slice(url.indexOf('?') + 1)
.split('&')
.forEach(function(str){
str = str.split('=');
ret[str[0]] = str[1];
});
return ret;
}
按如下方式使用:
var urlParams = getUrlParams(window.location.href);
拥有网址:https://www.google.com/?Field1=A&Value1=A1&Field2=B&Value2=B1
urlParams
应该等于:
{
"Field1" : "A",
"Value1" : "A1",
"Field2" : "B",
"Value2" : "B1"
}
答案 2 :(得分:0)
尝试将String.prototype.match()
与RegExp
/\w+(?=&|$)/g
匹配,以匹配后跟"&"
或输入字符串结尾的字词,while
循环,{{1 }}
Array.prototype.shift()