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 Jcrop插件实现图片选取功能
Nov 23 Javascript
javascript实现点击按钮让DIV层弹性移动的方法
Feb 24 Javascript
深入剖析JavaScript面向对象编程
Jul 12 Javascript
详解使用angularjs的ng-options时如何设置默认值(初始值)
Jul 18 Javascript
js最简单的双向绑定实例讲解
Jan 02 Javascript
JS 实现分页打印功能
May 16 Javascript
Bootstrap-table自定义可编辑每页显示记录数
Sep 07 Javascript
Vue使用lodop实现打印小结
Jul 06 Javascript
javascript History对象原理解析
Feb 17 Javascript
js模拟实现百度搜索
Jun 28 Javascript
详解JavaScript中的执行上下文及调用堆栈
Apr 29 Javascript
JavaScript实现一键复制内容剪贴板
Jul 23 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中如何直接执行SHELL
2013/06/28 PHP
ThinkPHP采用GET方式获取中文参数查询无结果的解决方法
2014/06/26 PHP
PHPWind9.0手动屏蔽验证码解决后台关闭验证码但是依然显示的问题
2016/08/12 PHP
AJAX架构之Dojo篇
2007/04/10 Javascript
尝试在让script的type属性等于text/html
2013/01/15 Javascript
JS控制日期显示的小例子
2013/11/23 Javascript
$(&quot;&quot;).click与onclick的区别示例介绍
2014/09/25 Javascript
node.js使用npm 安装插件时提示install Error: ENOENT报错的解决方法
2014/11/20 Javascript
微信小程序之仿微信漂流瓶实例
2016/12/09 Javascript
AngularJS 实现购物车全选反选功能
2017/10/24 Javascript
vue中的provide/inject的学习使用
2018/05/09 Javascript
Vue CLI项目 axios模块前后端交互的使用(类似ajax提交)
2019/09/01 Javascript
使用Easyui实现查询条件的后端传递并自动刷新表格的两种方法
2019/09/09 Javascript
JavaScript单线程和任务队列原理解析
2020/02/04 Javascript
element中el-container容器与div布局区分详解
2020/05/13 Javascript
[03:34]2014DOTA2西雅图国际邀请赛 淘汰赛7月15日TOPPLAY
2014/07/15 DOTA
[01:11:35]Liquid vs LGD 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
[04:15]DOTA2-DPC中国联赛1月19日Recap集锦
2021/03/11 DOTA
在Windows服务器下用Apache和mod_wsgi配置Python应用的教程
2015/05/06 Python
python WindowsError的错误代码详解
2017/07/23 Python
Python文件操作基本流程代码实例
2017/12/11 Python
浅析Python四种数据类型
2018/09/26 Python
解决PyCharm不运行脚本,而是运行单元测试的问题
2019/01/17 Python
Python第三方库h5py_读取mat文件并显示值的方法
2019/02/08 Python
python程序控制NAO机器人行走
2019/04/29 Python
简单了解为什么python函数后有多个括号
2019/12/19 Python
python 中不同包 类 方法 之间的调用详解
2020/03/09 Python
汽车驾驶求职信
2013/10/25 职场文书
应届毕业生个人求职信范文
2014/01/29 职场文书
信用社主任竞聘演讲稿
2014/05/23 职场文书
庆国庆国旗下讲话稿2014
2014/09/21 职场文书
综合办公室主任岗位职责
2015/04/01 职场文书
党员反邪教心得体会
2016/01/15 职场文书
党员电教片《信仰》心得体会
2016/01/15 职场文书
教您怎么制定西餐厅运营方案 ?
2019/07/05 职场文书
超外差式晶体管收音机的组装与统调
2021/04/22 无线电