前端JS獲取URL參數(shù)的4種方法總結(jié)
前言
對于前端來說,無論是在面試或者工作中都可能遇到處理 url 參數(shù)的問題,使用框架進行項目開發(fā)時或許不用,有自帶的獲取參數(shù)方式,但是拋開使用框架來說我們也可以使用原生 js 方式或者借用第三方庫來實現(xiàn)參數(shù)的獲取并對象化,下面就對具體用法進行介紹整理。
方法1: 字符串 split 方法
因為一個 url 地址是字符串形式的,所以利用 split 方法將參數(shù)提取出來,該方法比較常用,而且容易理解(對于不太會使用正則的我來說,haha~)
let URL = "http://www.baidu.com?name=張三&age=25&sex=男&wife=小紅"
function getUrlParams(url) {
// 通過 ? 分割獲取后面的參數(shù)字符串
let urlStr = url.split('?')[1]
// 創(chuàng)建空對象存儲參數(shù)
let obj = {};
// 再通過 & 將每一個參數(shù)單獨分割出來
let paramsArr = urlStr.split('&')
for(let i = 0,len = paramsArr.length;i < len;i++){
// 再通過 = 將每一個參數(shù)分割為 key:value 的形式
let arr = paramsArr[i].split('=')
obj[arr[0]] = arr[1];
}
return obj
}
console.log(getUrlParams(URL))
方法2: 利用 URLSearchParams 方法
在 MDN 中結(jié)合兩種方法實現(xiàn)參數(shù)的獲?。?. 使用 new URLSearchParams(url) 方法,返回一個 URLSearchParams 對象,再調(diào)用 entries() 方法返回一個可迭代對象(Iterator);2. 使用 Object.fromEntries(iterable) 方法轉(zhuǎn)化為普通對象
let URL = "http://www.baidu.com?name=Jack&age=25&sex=men&wife=Lucy"
function getUrlParams2(url) {
let urlStr = url.split('?')[1]
const urlSearchParams = new URLSearchParams(urlStr)
const result = Object.fromEntries(urlSearchParams.entries())
return result
}
console.log(getUrlParams2(URL))
特別的:URLSearchParams 方法不僅可以獲取參數(shù),還可以將參數(shù)對象轉(zhuǎn)為 字符串,詳細用法可查看 MDN 中的介紹,并且該方法存在瀏覽器兼容性問題。
方法3: 利用正則匹配方法
正則匹配功能強大相信很多小伙伴都知道,不僅可以實現(xiàn)在登錄注冊時的賬號、密碼、郵箱、手機號等等的驗證,還可以非常方便的處理一些字符串(校驗、替換、提取等操作),難點在于對正則使用的熟練度,這里就是通過正則提取字符串中需要的字符
let URL = "http://www.baidu.com?name=Tom&friend=Jerry"
function getUrlParams3(url){
// \w+ 表示匹配至少一個(數(shù)字、字母及下劃線), [\u4e00-\u9fa5]+ 表示匹配至少一個中文字符
let pattern = /(\w+|[\u4e00-\u9fa5]+)=(\w+|[\u4e00-\u9fa5]+)/ig;
let result = {};
url.replace(pattern, ($, $1, $2)=>{
result[$1] = $2;
})
return result
}
console.log(getUrlParams3(URL))
方法4: 使用第三方庫 qs
使用第三方庫 qs 也可以實現(xiàn) url 中參數(shù)字符的提取,還能實現(xiàn)將參數(shù)對象轉(zhuǎn)為 url 參數(shù)形式,需要注意的是瀏覽器 cdn 方式引入時是默認添加到全局對象 window 的 Qs 屬性上的
<script src="https://cdn.bootcdn.net/ajax/libs/qs/6.10.3/qs.min.js"></script>
<script>
let URL = "http://www.baidu.com?product='iPhone 13 Pro'&price=¥9999.00"
function getUrlParams4(url){
// 引入 qs 庫時會默認掛在到全局 window 的 Qs 屬性上
// console.log(window)
let urlStr = url.split('?')[1]
let result = Qs.parse(urlStr)
// 拼接額外參數(shù)
let otherParams = {
num:50,
size:6.1
}
let str = Qs.stringify(otherParams)
let newUrl = url + str
return {result,newUrl}
}
console.log(getUrlParams4(URL))
</script>
總結(jié):
到此這篇關(guān)于前端JS獲取URL參數(shù)的4種方法的文章就介紹到這了,更多相關(guān)前端獲取URL參數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JavaScript類數(shù)組對象轉(zhuǎn)換為數(shù)組對象的方法實例分析
這篇文章主要介紹了JavaScript類數(shù)組對象轉(zhuǎn)換為數(shù)組對象的方法,結(jié)合實例形式分析了javascript類數(shù)組對象的功能,以及類數(shù)組對象轉(zhuǎn)換為數(shù)組對象的相關(guān)方法與實現(xiàn)技巧,需要的朋友可以參考下2018-07-07
JavaScript日期時間與時間戳的轉(zhuǎn)換函數(shù)分享
這篇文章主要介紹了JavaScript日期時間與時間戳的轉(zhuǎn)換函數(shù)分享,本文給出兩個函數(shù)實現(xiàn)日期時間和時間戳間的轉(zhuǎn)換,需要的朋友可以參考下2015-01-01
JavaScript cookie與session的使用及區(qū)別深入探究
這篇文章主要介紹了Java中Cookie和Session詳解,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,感興趣的小伙伴可以參考一下2022-10-10
fileupload控件 文件類型客戶端驗證實現(xiàn)代碼
客戶端JS驗證fileupload控件,設(shè)置只允許特定的文件類型 ,當然服務(wù)器端更要判斷啊。這里是為了后臺驗證的更順利。2009-11-11
js實現(xiàn)iframe動態(tài)調(diào)整高度的代碼
iframe,尤其是不帶邊框的iframe因為能和網(wǎng)頁無縫的結(jié)合從而不刷新頁面的情況下更新頁面的部分數(shù)據(jù)成為可能,可是iframe的大小卻不像層那樣可以“伸縮自如”,所以帶來了使用上的麻煩,給iframe設(shè)置高度的時候多了也不好,少了更是不行,現(xiàn)在,讓我來告訴大家一種iframe動態(tài)調(diào)整高度的方法,主要是以下JS函數(shù):2008-01-01
Bootstrap學習系列之使用 Bootstrap Typeahead 組件實現(xiàn)百度下拉效果
這篇文章主要介紹了Bootstrap學習系列之使用 Bootstrap Typeahead 組件實現(xiàn)百度下拉效果的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2016-07-07

