JavaScript獲取URL參數(shù)的方法分享
一、字符串 split 方法
url
地址是字符串形式的,所以利用 split
方法將參數(shù)提取出來,該方法比較常用
,而且容易理解(無關(guān)正則)
let URL = "http://www.baidu.com?name=小宇&age=25&sex=男&wife=小君"; function getUrlParams(url) { // 通過 ? 分割獲取后面的參數(shù)字符串 let urlStr = url.split('?')[1]; // 創(chuàng)建空對(duì)象存儲(chǔ)參數(shù) let obj = {}; // 再通過 & 將每一個(gè)參數(shù)單獨(dú)分割出來 let paramsArr = urlStr.split('&'); for(let i = 0,len = paramsArr.length;i < len;i++){ // 再通過 = 將每一個(gè)參數(shù)分割為 key:value 的形式 let arr = paramsArr[i].split('='); obj[arr[0]] = arr[1]; } return obj; } console.log(getUrlParams(URL));
二、使用 URLSearchParams 方法
1、解析搜索字符串
let url = 'https://www.baidu.com/s?ie=UTF-8&wd=%E8%AE%B8%E5%96%84%E7%A5%A5&p=1'; let urlStr = url.split('?')[1]; const params = new URLSearchParams(urlStr); console.log(params.get('k')); // 返回字符串“許善祥”,支持自動(dòng) UTF-8 解碼 console.log(params.get('p')); // 返回字符串“1” console.log(params.get('xxx')); // 如果沒有 xxx 這個(gè)鍵,則返回 null console.log(params.has('xxx')); // 當(dāng)然也可以通過 has() 方法查詢是否存在指定的鍵 console.log(params.keys()); // 返回一個(gè) ES6 Iterator,內(nèi)含 ['k', 'p'] console.log(params.values()); // 返一個(gè) ES6 Iterator,內(nèi)含 ['許善祥', '1'] console.log(params.entries()); // 與 Map.prototype.entries() 類似
2、生成搜索字符串
const params = new URLSearchParams(); params.set('k', '許善祥'); // 設(shè)置參數(shù) params.set('p', 1); // 支持 Boolean、Number 等豐富類型 console.log(params.toString()); // k=%E8%AE%B8%E5%96%84%E7%A5%A5&p=1
3、Node.js 代碼
const { URLSearchParams } = require('url'); const urlSearchParams = new URLSearchParams();
三、使用正則匹配方法
正則匹配功能強(qiáng)大,不僅可以實(shí)現(xiàn)在登錄注冊(cè)時(shí)的賬號(hào)、密碼、郵箱、手機(jī)號(hào)等驗(yàn)證(看這里),還可以非常方便的處理一些字符串(校驗(yàn)、替換、提取等操作)。
let URL = 'http://www.baidu.com?name=祥&friend=宇'; function getUrlParams3(url){ // \w+ 表示匹配至少一個(gè)(數(shù)字、字母及下劃線), // [\u4e00-\u9fa5]+ 表示匹配至少一個(gè)中文字符 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)); // {name: '祥', friend: '宇'}
四、使用第三方庫 qs
使用第三方庫 qs 也可以實(shí)現(xiàn) url 中參數(shù)字符的提取,還能實(shí)現(xiàn)將參數(shù)對(duì)象轉(zhuǎn)為 url 參數(shù)形式,需要注意的是瀏覽器 cdn 方式引入時(shí)是默認(rèn)添加到全局對(duì)象 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?name=祥&friend=宇'; function getUrlParams4(url) { // 引入 qs 庫時(shí)會(huì)默認(rèn)掛在到全局 window 的 Qs 屬性上 // console.log(window); let urlStr = url.split('?')[1]; let result = Qs.parse(urlStr); // 拼接額外參數(shù) let otherParams = { homepage: 'xushanxiang.com' }; let str = Qs.stringify(otherParams); let newUrl = url + str; return {result, newUrl}; } console.log(getUrlParams4(URL));
到此這篇關(guān)于JavaScript獲取URL參數(shù)的方法分享的文章就介紹到這了,更多相關(guān)JavaScript獲取URL參數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
前端傳遞參數(shù)時(shí)form-data和json的區(qū)別詳解
前端可以通FormData對(duì)象實(shí)現(xiàn)表單形式提交數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于前端傳遞參數(shù)時(shí)form-data和json區(qū)別的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-11-11小程序拖動(dòng)區(qū)域?qū)崿F(xiàn)排序效果
這篇文章主要為大家詳細(xì)介紹了小程序拖動(dòng)區(qū)域?qū)崿F(xiàn)排序效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-09-09微信小程序事件對(duì)象中e.target和e.currentTarget的區(qū)別詳解
這篇文章主要介紹了微信小程序事件對(duì)象中e.target和e.currentTarget的區(qū)別詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-05-05js+css3實(shí)現(xiàn)簡(jiǎn)單時(shí)鐘特效
這篇文章主要為大家詳細(xì)介紹了js+css3實(shí)現(xiàn)簡(jiǎn)單時(shí)鐘特效,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-09-09JavaScript實(shí)現(xiàn)跑馬燈抽獎(jiǎng)活動(dòng)實(shí)例代碼解析與優(yōu)化(二)
這篇文章主要介紹了JavaScript實(shí)現(xiàn)跑馬燈抽獎(jiǎng)活動(dòng)實(shí)例代碼解析與優(yōu)化(二)的相關(guān)資料,需要的朋友可以參考下2016-02-02JS匿名函數(shù)和匿名自執(zhí)行函數(shù)概念與用法分析
這篇文章主要介紹了JS匿名函數(shù)和匿名自執(zhí)行函數(shù)概念與用法,結(jié)合實(shí)例形式分析了匿名函數(shù)和匿名自執(zhí)行函數(shù)的概念、功能、應(yīng)用場(chǎng)景及相關(guān)使用技巧,需要的朋友可以參考下2018-03-03JavaScript設(shè)計(jì)模式之職責(zé)鏈模式
這篇文章主要介紹了JavaScript設(shè)計(jì)模式之職責(zé)鏈模式,對(duì)設(shè)計(jì)模式感興趣的同學(xué),可以參考下2021-04-04