獲取URL並將URL解析成對象

  • 獲取URL
    通過代碼window.location.href來獲取當前頁面的完整的url,這個地址中也會包含URL中的參數,例如:www.baidu.com/acticle?type=food&code=2018
    然後我們可以對獲取的地址進行拆分,先從?拆分然後獲取到後半部分,然後對後半部分從&進行拆分,最後從=開始拆分,將拆分之後的地址組成一個對象,具體實現的代碼如下
let param=url.split("?")[1];				//獲取param
let arr=param.split("&");				
let obj={};
for(let i=0;i<arr.length;i++){
	let arr_param=arr[i].split("=");
	obj[arr_param[0]]=arr_param[1];
}	
console.log(obj);

如果我們只是想要單純的獲取URL中的參數,可以使用window.location.search來獲取,獲取的結果會是一個包含?和參數的一個字符串,例如:?type=food&code=2018,這裏需要注意的是獲取的字符串有一個問號,我們可以通過截取字符串的方法slice(1)或者substring(1)來獲取問號之後的參數,這兩個方法使用上沒有多大的區別,我更推薦使用前者,前者相對於後者來說可以使用負數來截取,如slice(-2)就會獲取到字符串的後兩位,當我們截取?之後的參數後後續的操作代碼和之前的一樣。

  • URLSearchParams方法獲取參數
    通過URLSearchParams方法來獲取參數是種很方便的方式,同樣前提是我們獲取?之後的字符串,接着我們需要new出一個實例,代碼如下:
let str = "type=food&code=2018";
let searchParams = new URLSearchParams( str );
searchParams.has('type') 											// true
searchParams.get('type') 											// "food"
searchParams.get('foo') 											// null,注意Firefox返回空字符串
searchParams.set('type', 'animal');
searchParams.get('type') 											// animal
searchParams.append('topic', 'webdev');

我們可以通過這種方式直接來獲取params中的各種參數,也可以給他追加參數。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章