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 相关文章推荐
AJAX使用了UpdatePanel后无法使用alert弹出脚本
Apr 02 Javascript
EasyUI 中 MenuButton 的使用方法
Jul 14 Javascript
JSON+HTML实现国家省市联动选择效果
May 18 Javascript
Javascript基础教程之for循环
Jan 18 Javascript
简单介绍JavaScript的变量和数据类型
Jun 03 Javascript
Angular 页面跳转时传参问题
Aug 01 Javascript
Bootstrap中点击按钮后变灰并显示加载中实例代码
Sep 23 Javascript
清除浏览器缓存的几种方法总结(必看)
Dec 09 Javascript
jQuery实现鼠标悬停3d菜单展开动画效果
Jan 19 Javascript
input获取焦点时底部菜单被顶上来问题的解决办法
Jan 24 Javascript
JavaScript之Date_动力节点Java学院整理
Jun 28 Javascript
浅谈鸿蒙 JavaScript GUI 技术栈
Sep 17 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
Joomla下利用configuration.php存储简单数据
2010/05/19 PHP
thinkphp5框架结合mysql实现微信登录和自定义分享链接与图文功能示例
2019/08/13 PHP
解决laravel资源加载路径设置的问题
2019/10/14 PHP
jquery select操作的日期联动实现代码
2009/12/06 Javascript
jQuery Ajax使用 全解析
2010/12/15 Javascript
js jquery数组介绍
2012/07/15 Javascript
jquery交替变换颜色的三种方法 实例代码
2013/11/19 Javascript
input:checkbox多选框实现单选效果跟radio一样
2014/06/16 Javascript
Nodejs中读取中文文件编码问题、发送邮件和定时任务实例
2015/01/01 NodeJs
【JS+CSS3】实现带预览图幻灯片效果的示例代码
2016/03/17 Javascript
jQuery基本选择器之标签名选择器
2016/09/03 Javascript
jQuery点击导航栏选中更换样式的实现代码
2017/01/23 Javascript
Vue全家桶实践项目总结(推荐)
2017/11/04 Javascript
使用jquery的cookie实现登录页记住用户名和密码的方法
2019/03/13 jQuery
vue 点击展开显示更多(点击收起部分隐藏)
2019/04/09 Javascript
JS开发常用工具函数(小结)
2019/07/04 Javascript
原生js实现下拉框选择组件
2021/01/20 Javascript
[02:48]DOTA2英雄基础教程 暗夜魔王
2013/12/12 DOTA
如何使用Python的Requests包实现模拟登陆
2018/04/27 Python
python2.7实现爬虫网页数据
2018/05/25 Python
Python 最大概率法进行汉语切分的方法
2018/12/14 Python
PyQt Qt Designer工具的布局管理详解
2019/08/07 Python
python求加权平均值的实例(附纯python写法)
2019/08/22 Python
python异常处理和日志处理方式
2019/12/24 Python
Python面向对象程序设计之私有变量,私有方法原理与用法分析
2020/03/23 Python
opencv-python的RGB与BGR互转方式
2020/06/02 Python
python实现批处理文件
2020/07/28 Python
Django如何使用asyncio协程和ThreadPoolExecutor多线程
2020/10/12 Python
领导干部遵守党的政治纪律情况思想汇报
2014/09/14 职场文书
第二批党的群众路线教育实践活动总结报告
2014/10/30 职场文书
追讨欠款律师函
2015/06/24 职场文书
摘录式读书笔记
2015/07/01 职场文书
会议新闻稿
2015/07/17 职场文书
python实现批量移动文件
2021/04/05 Python
python实现层次聚类的方法
2021/11/01 Python
《乙女游戏世界对路人角色很不友好》OP主题曲无字幕动画MV公开
2022/04/05 日漫