前端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 相关文章推荐
jQuery的实现原理的模拟代码 -4 重要的扩展函数 extend
Aug 03 Javascript
Js-$.extend扩展方法使方法参数更灵活
Jan 15 Javascript
推荐一款jQuery插件模板
Jan 09 Javascript
jquery实现textarea输入框限制字数的方法
Jan 15 Javascript
JavaScript输出当前时间Unix时间戳的方法
Apr 06 Javascript
JavaScript实现信用卡校验方法
Apr 07 Javascript
JavaScript字符串对象
Jan 14 Javascript
jquery 校验中国身份证号码实例详解
Apr 11 jQuery
JS实现字符串去重及数组去重的方法示例
Apr 21 Javascript
Vue使用Canvas绘制图片、矩形、线条、文字,下载图片
Apr 26 Javascript
微信小程序实现吸顶效果
Jan 08 Javascript
如何使JavaScript休眠或等待
Apr 27 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
一个分页的论坛
2006/10/09 PHP
帖几个PHP的无限分类实现想法~
2007/01/02 PHP
9个经典的PHP代码片段分享
2014/12/18 PHP
编写PHP程序检查字符串中的中文字符个数的实例分享
2016/03/17 PHP
[原创]php正则删除html代码中class样式属性的方法
2017/05/24 PHP
javascript css在IE和Firefox中区别分析
2009/02/18 Javascript
FireFox JavaScript全局Event对象
2009/06/14 Javascript
用document.documentElement取代document.body的原因分析
2009/11/12 Javascript
js Html结构转字符串形式显示代码
2011/11/15 Javascript
圣诞节Merry Christmas给博客添加浪漫的下雪效果基于jquery实现
2012/12/27 Javascript
jQuery实现TAB风格的全国省份城市滑动切换效果代码
2015/08/24 Javascript
JS+CSS实现滑动切换tab菜单效果
2015/08/25 Javascript
很不错的两款Bootstrap Icon图标选择组件
2016/01/28 Javascript
Jquery ui datepicker设置日期范围,如只能隔3天【实现代码】
2016/05/04 Javascript
JavaScript里 ==与===区别详解
2016/08/16 Javascript
js实现倒计时效果(小于10补零)
2017/03/08 Javascript
AngularJS实现图片上传和预览功能的方法分析
2017/11/08 Javascript
浅析JavaScript中的特殊数据类型
2017/12/15 Javascript
webpack打包js的方法
2018/03/12 Javascript
JS基于对象的链表实现与使用方法示例
2019/01/31 Javascript
在vue中使用eslint,配合vscode的操作
2020/11/09 Javascript
线程和进程的区别及Python代码实例
2015/02/04 Python
Python中的id()函数指的什么
2017/10/17 Python
python中ASCII码和字符的转换方法
2018/07/09 Python
Pandas之DataFrame对象的列和索引之间的转化
2019/06/25 Python
Python上下文管理器用法及实例解析
2019/11/11 Python
浅析Python中字符串的intern机制
2020/10/03 Python
最新版 Windows10上安装Python 3.8.5的步骤详解
2020/11/28 Python
美国女孩洋娃娃店:American Girl
2017/10/24 全球购物
审计班子对照检查材料
2014/08/27 职场文书
学习优秀党务工作者先进事迹材料思想报告
2014/09/17 职场文书
卫生厅领导班子党的群众路线教育实践活动整改措施
2014/09/20 职场文书
城管执法人员个人对照检查材料思想汇报
2014/09/29 职场文书
公司周年庆典标语
2014/10/07 职场文书
Python 类,对象,数据分类,函数参数传递详解
2021/09/25 Python
Python中的嵌套循环详情
2022/03/23 Python