前端JS获取URL参数的4种方法总结


Posted in Javascript onApril 05, 2022

前言

对于前端来说,无论是在面试或者工作中都可能遇到处理 url 参数的问题,使用框架进行项目开发时或许不用,有自带的获取参数方式,但是抛开使用框架来说我们也可以使用原生 js 方式或者借用第三方库来实现参数的获取并对象化,下面就对具体用法进行介绍整理。

方法1: 字符串 split 方法

因为一个 url 地址是字符串形式的,所以利用 split 方法将参数提取出来,该方法比较常用,而且容易理解(对于不太会使用正则的我来说,haha~)

let URL = "http://www.baidu.com?name=张三&age=25&sex=男&wife=小红"
function getUrlParams(url) {
    // 通过 ? 分割获取后面的参数字符串
    let urlStr = url.split('?')[1]
    // 创建空对象存储参数
	let obj = {};
    // 再通过 & 将每一个参数单独分割出来
	let paramsArr = urlStr.split('&')
	for(let i = 0,len = paramsArr.length;i < len;i++){
        // 再通过 = 将每一个参数分割为 key:value 的形式
		let arr = paramsArr[i].split('=')
		obj[arr[0]] = arr[1];
	}
	return obj
}
console.log(getUrlParams(URL))

前端JS获取URL参数的4种方法总结

方法2: 利用 URLSearchParams 方法

在 MDN 中结合两种方法实现参数的获取:1. 使用 new URLSearchParams(url) 方法,返回一个 URLSearchParams 对象,再调用 entries() 方法返回一个可迭代对象(Iterator);2. 使用 Object.fromEntries(iterable) 方法转化为普通对象

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))

前端JS获取URL参数的4种方法总结

特别的:URLSearchParams 方法不仅可以获取参数,还可以将参数对象转为 字符串,详细用法可查看 MDN 中的介绍,并且该方法存在浏览器兼容性问题。

方法3: 利用正则匹配方法

正则匹配功能强大相信很多小伙伴都知道,不仅可以实现在登录注册时的账号、密码、邮箱、手机号等等的验证,还可以非常方便的处理一些字符串(校验、替换、提取等操作),难点在于对正则使用的熟练度,这里就是通过正则提取字符串中需要的字符

let URL = "http://www.baidu.com?name=Tom&friend=Jerry"
function getUrlParams3(url){
	// \w+ 表示匹配至少一个(数字、字母及下划线), [\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))

前端JS获取URL参数的4种方法总结

方法4: 使用第三方库 qs

使用第三方库 qs 也可以实现 url 中参数字符的提取,还能实现将参数对象转为 url 参数形式,需要注意的是浏览器 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)
	// 拼接额外参数
	let otherParams = {
		num:50,
		size:6.1
	}
	let str = Qs.stringify(otherParams)
	let newUrl = url + str
	return {result,newUrl}
}
console.log(getUrlParams4(URL))
</script>

前端JS获取URL参数的4种方法总结

总结:

到此这篇关于前端JS获取URL参数的4种方法的文章就介绍到这了,更多相关前端获取URL参数内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
关闭浏览器窗口弹出提示框并且可以控制其失效
Apr 15 Javascript
js改变embed标签src值的方法
Apr 10 Javascript
JavaScript中Date.toSource()方法的使用教程
Jun 12 Javascript
不得不分享的JavaScript常用方法函数集(下)
Dec 25 Javascript
jQuery模拟select实现下拉菜单功能
Jun 20 Javascript
手机图片预览插件photoswipe.js使用总结
Aug 25 Javascript
jquery attr()设置和获取属性值实例教程
Sep 25 Javascript
纯JS实现表单验证实例
Dec 24 Javascript
Angularjs中ng-repeat的简单实例
Aug 25 Javascript
详解javascript 正则表达式之分组与前瞻匹配
May 30 Javascript
layui操作列按钮个数和文字颜色的判断实例
Sep 11 Javascript
js 函数性能比较方法
Aug 24 Javascript
threejs太阳光与阴影效果实例代码
JS实现数组去重的11种方法总结
Apr 04 #Javascript
vue使用wavesurfer.js解决音频可视化播放问题
Apr 04 #Vue.js
JavaScript模拟实现网易云轮播效果
Javascript中Microtask和Macrotask鲜为人知的知识点
vue中div禁止点击事件的实现
Apr 02 #Vue.js
Vue组件更新数据v-model不生效的解决
Apr 02 #Vue.js
You might like
如何选购合适的收音机
2021/03/01 无线电
你真的了解JavaScript吗?
2007/02/24 Javascript
一些相见恨晚的 JavaScript 技巧
2010/04/25 Javascript
JavaScript 通过模式匹配实现重载
2010/08/12 Javascript
为开发者准备的10款最好的jQuery日历插件
2014/02/04 Javascript
js 左右悬浮对联广告特效代码
2014/12/12 Javascript
javascript抽象工厂模式详细说明
2014/12/16 Javascript
javascript实现炫酷的拖动分页
2015/05/11 Javascript
JavaScript实现非常简单实用的下拉菜单效果
2015/08/27 Javascript
jquery文字填写自动高度的实现方法
2016/11/07 Javascript
bootstrapfileinput实现文件自动上传
2016/11/08 Javascript
JS判断指定dom元素是否在屏幕内的方法实例
2017/01/23 Javascript
Vue动态实现评分效果
2017/05/24 Javascript
Express框架之connect-flash详解
2017/05/31 Javascript
利用vue.js实现被选中状态的改变方法
2018/02/08 Javascript
浅谈vuepress 踩坑记
2018/04/18 Javascript
jQuery实现table表格checkbox全选的方法分析
2018/07/04 jQuery
新手简单了解vue
2019/05/29 Javascript
在react-antd中弹出层form内容传递给父组件的操作
2020/10/24 Javascript
[50:02]完美世界DOTA2联赛PWL S2 Magma vs FTD 第三场 11.29
2020/12/03 DOTA
python扫描proxy并获取可用代理ip的实例
2017/08/07 Python
Python使用Socket实现简单聊天程序
2020/02/28 Python
美国正版电视节目和电影在线观看:Hulu
2018/05/24 全球购物
一套SQL笔试题
2016/08/14 面试题
农村婚礼证婚词
2014/01/10 职场文书
颁奖典礼主持词
2014/03/25 职场文书
《长城和运河》教学反思
2014/04/14 职场文书
服装发布会策划方案
2014/05/22 职场文书
个人四风对照检查材料
2014/09/26 职场文书
学习退步检讨书
2014/09/28 职场文书
村支部书记群众路线对照检查材料思想汇报
2014/10/08 职场文书
2015个人半年总结范文
2015/03/09 职场文书
小学思想品德教学反思
2016/02/24 职场文书
logback 实现给变量指定默认值
2021/08/30 Java/Android
http通过StreamingHttpResponse完成连续的数据传输长链接方式
2022/02/12 Python
利用nginx搭建RTMP视频点播、直播、HLS服务器
2022/05/25 Servers