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 each()源代码
Feb 14 Javascript
jQuery Mobile 导航栏代码
Nov 01 Javascript
JavaScript 语言基础知识点总结(思维导图)
Nov 10 Javascript
js图片向右一张张滚动效果实例代码
Nov 23 Javascript
浅析JavaScript函数的调用模式
Aug 10 Javascript
Javascript this 函数深入详解
Dec 13 Javascript
Bootstrap3 模态框使用实例
Feb 22 Javascript
node.js利用redis数据库缓存数据的方法
Mar 01 Javascript
JS非空验证及邮箱验证的实例
Aug 11 Javascript
Angular浏览器插件Batarang介绍及使用
Feb 07 Javascript
jQuery实现基本隐藏与显示效果的方法详解
Sep 05 jQuery
Jquery如何使用animation动画效果改变背景色的代码
Jul 20 jQuery
如何通过简单的代码描述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二维数组排序详解
2013/11/06 PHP
PHP下获取上个月、下个月、本月的日期(strtotime,date)
2014/02/02 PHP
php中ltrim()、rtrim()与trim()删除字符空格实例
2014/11/25 PHP
fsockopen pfsockopen函数被禁用,SMTP发送邮件不正常的解决方法
2015/09/20 PHP
实例:用 JavaScript 来操作字符串(一些字符串函数)
2007/02/15 Javascript
javascript开发技术大全-第3章 js数据类型
2011/07/03 Javascript
jQuery中获取checkbox选中项等操作及注意事项
2013/11/24 Javascript
jquery数组之存放checkbox全选值示例代码
2013/12/20 Javascript
常用jQuery选择器总结
2014/07/11 Javascript
js的touch事件的实际引用
2014/10/13 Javascript
jQuery中has()方法用法实例
2015/01/06 Javascript
jQuery调取jSon数据并展示的方法
2015/01/29 Javascript
Javascript基于jQuery UI实现选中区域拖拽效果
2016/11/25 Javascript
详解vue指令与$nextTick 操作DOM的不同之处
2018/08/02 Javascript
Vuejs2 + Webpack框架里,模拟下载的实例讲解
2018/09/05 Javascript
Vue源码之关于vm.$delete()/Vue.use()内部原理详解
2019/05/01 Javascript
layer弹出层扩展主题的方法
2019/09/11 Javascript
详解用js代码触发dom事件的实现方案
2020/06/10 Javascript
用Python的urllib库提交WEB表单
2009/02/24 Python
关于你不想知道的所有Python3 unicode特性
2014/11/28 Python
python实现字典(dict)和字符串(string)的相互转换方法
2017/03/01 Python
Python简单实现控制电脑的方法
2018/01/22 Python
浅谈pandas中shift和diff函数关系
2018/04/08 Python
Python中将dataframe转换为字典的实例
2018/04/13 Python
Python根据成绩分析系统浅析
2019/02/11 Python
Django分页功能的实现代码详解
2019/07/29 Python
Python生态圈图像格式转换问题(推荐)
2019/12/02 Python
利用python实现凯撒密码加解密功能
2020/03/31 Python
如何将字串String转换成整数int
2015/02/21 面试题
工程师岗位职责
2013/11/08 职场文书
数据管理员的自我评价分享
2013/11/15 职场文书
创业计划书的内容步骤和要领
2014/01/04 职场文书
2014年民主评议党员个人总结
2014/09/24 职场文书
小程序后台PHP版本部署运行 LNMP+WNMP
2021/04/01 Servers
vue实现无缝轮播效果(跑马灯)
2021/05/14 Vue.js
Oracle删除归档日志及添加定时任务
2022/06/28 Oracle