前端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 相关文章推荐
Javascript hasOwnProperty 方法 &amp; in 关键字
Nov 26 Javascript
JavaScript高级程序设计 客户端存储学习笔记
Sep 10 Javascript
eclipse导入jquery包后报错的解决方法
Feb 17 Javascript
js实现的全国省市二级联动下拉选择菜单完整实例
Aug 17 Javascript
JavaScript代码实现图片循环滚动效果
Mar 19 Javascript
JS计算两个时间相差分钟数的方法示例
Jan 10 Javascript
vue项目关闭eslint校验
Mar 21 Javascript
详解无限滚动插件vue-infinite-scroll源码解析
May 12 Javascript
在layui.use 中自定义 function 的正确方法
Sep 16 Javascript
vue实现将一个数组内的相同数据进行合并
Nov 07 Javascript
小程序实现录音功能
Sep 22 Javascript
Nuxt的路由动画效果案例
Nov 06 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
PHP 利用AJAX获取网页并输出的实现代码(Zjmainstay)
2012/08/31 PHP
PHP中对缓冲区的控制实现代码
2013/09/29 PHP
PHP中的switch语句的用法实例详解
2015/10/21 PHP
完美解决thinkphp唯一索引重复时出错的问题
2017/03/31 PHP
Laravel jwt 多表(多用户端)验证隔离的实现
2019/12/18 PHP
PhpStorm2020 + phpstudyV8 +XDebug的教程详解
2020/09/17 PHP
JS 无法通过W3C验证的处理方法
2010/03/09 Javascript
jQuery中:file选择器用法实例
2015/01/04 Javascript
javascript实现textarea中tab键的缩排处理方法
2015/06/26 Javascript
JavaScript实现倒计时代码段Item1(非常实用)
2015/11/03 Javascript
AngularJs表单验证实例详解
2016/05/30 Javascript
Js得到radiobuttonlist选中值的两种方法(推荐)
2016/08/25 Javascript
JS验证 只能输入小数点,数字,负数的实现方法
2016/10/07 Javascript
JS匿名函数实例分析
2016/11/26 Javascript
利用CSS、JavaScript及Ajax实现图片预加载的方法
2016/11/29 Javascript
node.js利用redis数据库缓存数据的方法
2017/03/01 Javascript
JavaScript中document.referrer的用法详解
2017/07/04 Javascript
Vue实现typeahead组件功能(非常靠谱)
2017/08/26 Javascript
iframe高度自适应及隐藏滚动条的实例详解
2017/09/29 Javascript
[02:20]DOTA2中文配音宣传片
2013/05/22 DOTA
python自定义类并使用的方法
2015/05/07 Python
Python中使用装饰器来优化尾递归的示例
2016/06/18 Python
详解Python中的from..import绝对导入语句
2016/06/21 Python
Python中is与==判断的区别
2017/03/28 Python
python_opencv用线段画封闭矩形的实例
2018/12/05 Python
python进程的状态、创建及使用方法详解
2019/12/06 Python
Python调用shell cmd方法代码示例解析
2020/06/18 Python
Tenstickers法国:墙贴和装饰贴纸
2019/08/26 全球购物
人事专员岗位职责范本
2014/03/04 职场文书
煤矿安全生产责任书
2014/04/15 职场文书
运动会演讲稿300字
2014/08/25 职场文书
观看信仰心得体会
2014/09/04 职场文书
简单通用的简历自我评价
2014/09/21 职场文书
孔子观后感
2015/06/08 职场文书
学雷锋活动简报
2015/07/20 职场文书
叶县这家生产军用电台的兵工厂,人称“四机部”,走出一上将
2022/02/18 无线电