JavaScript获取URL参数的方法分享


Posted in Javascript onApril 07, 2022

一、字符串 split 方法

url 地址是字符串形式的,所以利用 split 方法将参数提取出来,该方法比较常用,而且容易理解(无关正则)

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

JavaScript获取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'));   // 返回字符串“许善祥”,支持自动 UTF-8 解码
console.log(params.get('p'));   // 返回字符串“1”
console.log(params.get('xxx')); // 如果没有 xxx 这个键,则返回 null
console.log(params.has('xxx')); // 当然也可以通过 has() 方法查询是否存在指定的键
console.log(params.keys());     // 返回一个 ES6 Iterator,内含 ['k', 'p']
console.log(params.values());   // 返一个 ES6 Iterator,内含 ['许善祥', '1']
console.log(params.entries());  // 与 Map.prototype.entries() 类似

2、生成搜索字符串

const params = new URLSearchParams();
params.set('k', '许善祥');       // 设置参数
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();

三、使用正则匹配方法

正则匹配功能强大,不仅可以实现在登录注册时的账号、密码、邮箱、手机号等验证(看这里),还可以非常方便的处理一些字符串(校验、替换、提取等操作)。

let URL = 'http://www.baidu.com?name=祥&friend=宇';
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));
// {name: '祥', friend: '宇'}

四、使用第三方库 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?name=祥&friend=宇';
function getUrlParams4(url) {
    // 引入 qs 库时会默认挂在到全局 window 的 Qs 属性上
    // console.log(window);
    let urlStr = url.split('?')[1];
    let result = Qs.parse(urlStr);
    // 拼接额外参数
    let otherParams = {
        homepage: 'xushanxiang.com'
    };
    let str = Qs.stringify(otherParams);
    let newUrl = url + str;
    return {result, newUrl};
}
console.log(getUrlParams4(URL));

JavaScript获取URL参数的方法分享

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

Javascript 相关文章推荐
javascript学习(二)javascript常见问题总结
Jan 02 Javascript
css与javascript跨浏览器兼容性总结
Sep 15 Javascript
JavaScript设计模式之抽象工厂模式介绍
Dec 28 Javascript
jquery实现先淡出再折叠收起的动画效果
Aug 07 Javascript
jQuery each函数源码分析
May 25 Javascript
用iframe实现不刷新整个页面上传图片的实例
Nov 18 Javascript
微信小程序 详解下拉加载与上拉刷新实现方法
Jan 13 Javascript
JS表单数据验证的正则表达式(常用)
Feb 18 Javascript
用React实现一个完整的TodoList的示例代码
Oct 30 Javascript
vue实现点击隐藏与显示实例分享
Feb 13 Javascript
Vue中正确使用Element-UI组件的方法实例
Oct 13 Javascript
微信小程序实现点击导航条切换页面
Nov 19 Javascript
如何通过简单的代码描述Angular父组件、子组件传值
TypeScript 使用 Tuple Union 声明函数重载
Apr 07 #Javascript
Axios代理配置及封装响应拦截处理方式
vue-cil之axios的二次封装与proxy反向代理使用说明
Apr 07 #Vue.js
动态规划之使用备忘录来改进Javascript函数
Apr 07 #Javascript
vue实现拖拽交换位置
Apr 07 #Vue.js
使用Ajax实现进度条的绘制
You might like
实现“上一页”和“下一页按钮
2006/10/09 PHP
一个高ai的分页函数和一个url函数
2006/10/09 PHP
ADODB的数据库封包程序库
2006/12/31 PHP
配置Apache2.2+PHP5+CakePHP1.2+MySQL5运行环境
2009/04/25 PHP
成为好程序员必须避免的5个坏习惯
2014/07/04 PHP
php实现的简单日志写入函数
2015/03/31 PHP
举例讲解PHP面对对象编程的多态
2015/08/12 PHP
PHP array_key_exists检查键名或索引是否存在于数组中的实现方法
2016/06/13 PHP
php+ajax实现无刷新文件上传功能(ajaxuploadfile)
2018/02/11 PHP
thinkPHP框架通过Redis实现增删改查操作的方法详解
2019/05/13 PHP
[原创]来自ImageSee官方 JavaScript图片浏览器
2008/01/16 Javascript
从面试题学习Javascript 面向对象(创建对象)
2012/03/30 Javascript
JavaScript基于ajax编辑信息用法实例
2015/07/15 Javascript
JS实现黑客帝国文字下落效果
2015/09/01 Javascript
JS+html5制作简单音乐播放器
2020/09/13 Javascript
Vue2 Vue-cli中使用Typescript的配置详解
2017/07/24 Javascript
bootstrap Table的一些小操作
2017/11/01 Javascript
VUE element-ui 写个复用Table组件的示例代码
2017/11/18 Javascript
判断iOS、Android以及PC端的示例代码
2018/11/15 Javascript
js实现验证码功能
2020/07/24 Javascript
python插入排序算法实例分析
2015/07/03 Python
Python获取当前函数名称方法实例分享
2018/01/18 Python
python 美化输出信息的实例
2018/10/15 Python
python 划分数据集为训练集和测试集的方法
2018/12/11 Python
Ubuntu18.04中Python2.7与Python3.6环境切换
2019/06/14 Python
Python读取VOC中的xml目标框实例
2020/03/10 Python
python 使用paramiko模块进行封装,远程操作linux主机的示例代码
2020/12/03 Python
ProBikeKit英国:在线公路自行车之家
2017/02/10 全球购物
.net软件工程师面试题
2015/03/31 面试题
物业管理毕业生个人的求职信
2013/11/30 职场文书
兰兰过桥教学反思
2014/02/08 职场文书
恶搞卫生巾广告词
2014/03/18 职场文书
生日寄语大全
2014/04/08 职场文书
2014年个人年终总结
2015/03/09 职场文书
PHP实现rar解压读取扩展包小结
2021/06/03 PHP
Web应用开发TypeScript使用详解
2022/05/25 Javascript