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 相关文章推荐
JQuery的一些小应用收集
Mar 27 Javascript
解析JavaScript中的标签语句
Jun 19 Javascript
JavaScript实现简单Tip提示框效果
Apr 20 Javascript
最丑的时钟效果!js canvas时钟制作方法
Aug 15 Javascript
详解jQuery插件开发方式
Nov 22 Javascript
详解Vue双向数据绑定原理解析
Sep 11 Javascript
vue中引用swiper轮播插件的教程详解
Aug 16 Javascript
JS实现的贪吃蛇游戏完整实例
Jan 18 Javascript
Vuejs学习笔记之使用指令v-model完成表单的数据双向绑定
Apr 29 Javascript
thinkjs微信中控之微信鉴权登陆的实现代码
Aug 08 Javascript
layui表格内容溢出的解决方法
Sep 06 Javascript
基于vue和bootstrap实现简单留言板功能
May 30 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
默默小谈PHP&amp;MYSQL分页原理及实现
2007/01/02 PHP
学习php开源项目的源码指南
2014/12/21 PHP
关于PHP中字符串与多进制转换函数的实例代码
2016/11/03 PHP
JavaScript如何调试有哪些建议和技巧附五款有用的调试工具
2015/10/28 Javascript
如何解决ligerUI布局时Center中的Tab高度大小
2015/11/24 Javascript
快速获取/设置iframe内对象元素的几种js实现方法
2016/05/20 Javascript
JS和canvas实现俄罗斯方块
2017/03/14 Javascript
JQuery form表单提交前验证单选框是否选中、删除记录时验证经验总结(整理)
2017/06/09 jQuery
JavaScript之Canvas_动力节点Java学院整理
2017/07/04 Javascript
利用angular、react和vue实现相同的面试题组件
2018/02/19 Javascript
详解React项目的服务端渲染改造(koa2+webpack3.11)
2018/03/19 Javascript
boostrap模态框二次弹出清空原有内容的方法
2018/08/10 Javascript
解决vue props 拿不到值的问题
2018/09/11 Javascript
通过实例讲解JS如何防抖动
2019/06/15 Javascript
EasyUI 数据表格datagrid列自适应内容宽度的实现
2019/07/18 Javascript
js实现蒙版效果
2020/01/11 Javascript
js面试题之异步问题的深入理解
2020/09/20 Javascript
vue集成openlayers加载geojson并实现点击弹窗教程
2020/09/24 Javascript
Python中使用hashlib模块处理算法的教程
2015/04/28 Python
mac安装scrapy并创建项目的实例讲解
2018/06/13 Python
python threading和multiprocessing模块基本用法实例分析
2019/07/25 Python
Python接口测试环境搭建过程详解
2020/06/29 Python
Python爬取梨视频的示例
2021/01/29 Python
matplotlib源码解析标题实现(窗口标题,标题,子图标题不同之间的差异)
2021/02/22 Python
HTML5 source标签:媒介元素定义媒介资源
2018/01/29 HTML / CSS
美国家居装饰店:Z Gallerie
2020/12/28 全球购物
C&A巴西网上商店:时尚、衣服、手机和鞋子
2020/06/07 全球购物
实习销售业务员自我鉴定
2013/09/21 职场文书
自荐信格式范文
2013/10/07 职场文书
大学校庆策划书
2014/01/31 职场文书
百年校庆节目主持词
2014/03/27 职场文书
西安兵马俑导游词
2015/02/02 职场文书
暑期家教宣传单
2015/07/14 职场文书
MySQL中几种插入和批量语句实例详解
2021/09/14 MySQL
Java字符串逆序方法详情
2022/03/21 Java/Android
关于python3 opencv 图像二值化的问题(cv2.adaptiveThreshold函数)
2022/04/04 Python