用js获取url参数
首先我们要知道url参数指的是哪部分,其实它的参数就是?之后的部分,以&相连接,我们需要做的就是把它们获取到,放在一个对象中。下边是代码演示:
//substring() 方法用于提取字符串中介于两个指定下标之间的字符。
//split() 方法用于把一个字符串分割成字符串数组。
//encodeURI() 函数可把字符串作为 URI 进行编码。
//unescape() 函数可对通过 escape() 编码的字符串进行解码。
//slice() 方法可从已有的数组中返回选定的元素。
var a = 'https://www.suibian.com/?subIndustry=dfav&init=-l&insturyType=instury0l&headckid=deep&ddd=dfgv';
var arr = a.substring(a.indexOf("?")+1).split("&");
let obj={}
arr.forEach((item)=>{
let arr = item.split('=');
// console.log(arr);
obj[arr[0]] = arr[1];
// console.log(obj[arr[0]]);
})
console.log(obj);
为了帮助大家理解,给大家解析一下编码思路,首先将变量里边?第一次出现的位置加1开始,他之后的字符全都截取,然后将这些字符以&符号分割成字符串数组。
接下来我们需要用到forEach(),该方法为数组的每一个元素执行提交的函数,将原arr数组里边的每一个元素都用=分割成一个新的数组在赋值给arr,我们在这里可以打印一下此时的arr数组里边的内容以方便我们大家理解。
[ 'subIndustry', 'dfav' ] [ 'init', '-l' ] [ 'insturyType', 'instury0l' ] [ 'headckid', 'deep' ] [ 'ddd', 'dfgv' ]
obj[arr[0]] = arr[1]; 这一步的意思是说对象obj这个对象的键所应该对应的键值
{ subIndustry: 'dfav', init: '-l', insturyType: 'instury0l', headckid: 'deep', ddd: 'dfgv' }
第二种方法(建议)
URLSearchParams 接口定义了一些实用的方法来处理 URL 的查询字符串。
let a = "https://www.suibian.com/?subIndustry=&init=-1&industryType=industry_01&headckid=deeeb5d3fe551993";
let b = a.substring(a.indexOf("?") + 1);
let aaa = new URLSearchParams(b);
console.log(aaa);
//此处如果需要单独某个参数的话,可以用get
//let name=aaa.get('industryType');
//console.log(name);//industry_01
let obj = {};
for (var it of aaa) {
console.log(it);
obj[it[0]] = it[1];
}
console.log(obj);
aaa打印出来如下
URLSearchParams {
'subIndustry' => '',
'init' => '-1',
'industryType' => 'industry_01',
'headckid' => 'deeeb5d3fe551993' }
it打印出来如下
[ 'subIndustry', '' ]
[ 'init', '-1' ]
[ 'industryType', 'industry_01' ]
[ 'headckid', 'deeeb5d3fe551993' ]
最终的结果
{
subIndustry: '',
init: '-1',
industryType: 'industry_01',
headckid: 'deeeb5d3fe551993'
}