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 相关文章推荐
js+FSO遍历文件夹下文件并显示
Mar 07 Javascript
Jquery常用技巧收集整理篇
Nov 14 Javascript
dojo学习第一天 Tab选项卡 实现
Aug 28 Javascript
JQuery实现用户名无刷新验证的小例子
Mar 22 Javascript
JS继承用法实例分析
Feb 05 Javascript
JavaScript实现窗口抖动效果
Oct 19 Javascript
jquery组件WebUploader文件上传用法详解
Oct 23 Javascript
ie下js不执行的几种可能
Feb 28 Javascript
使用veloticy-ui生成文字动画效果
Feb 08 Javascript
每天学点Vue源码之vm.$mount挂载函数
Mar 11 Javascript
Javascript异步流程控制之串行执行详解
Sep 27 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中eclipse 用空格替换 tab键
2013/06/24 PHP
实例讲解PHP中使用命名空间
2019/01/27 PHP
php日志函数error_log用法实例分析
2019/09/23 PHP
PHP 实现 WebSocket 协议原理与应用详解
2020/04/22 PHP
【消息提示组件】,兼容IE6/7&amp;&amp;FF2
2007/09/04 Javascript
Javascript 静态页面实现随机显示广告的办法
2010/11/17 Javascript
用JavaScript仿PS里的羽化效果代码
2011/12/20 Javascript
jsvascript图像处理—(计算机视觉应用)图像金字塔
2013/01/15 Javascript
jQuery scrollFix滚动定位插件
2015/04/01 Javascript
如何用angularjs制作一个完整的表格
2016/01/21 Javascript
Javascript基础教程之比较null和undefined值
2016/05/16 Javascript
JQuery遍历元素的后代和同胞实现方法
2016/09/18 Javascript
AngularJS读取JSON及XML文件的方法示例
2017/05/25 Javascript
node.js用fs.rename强制重命名或移动文件夹的方法
2017/12/27 Javascript
基于vue2.x的电商图片放大镜插件的使用
2018/01/22 Javascript
Element输入框带历史查询记录的实现示例
2019/01/15 Javascript
微信自定义分享链接信息(标题,图片和内容)实现过程详解
2019/09/04 Javascript
解决layer.msg 不居中 ifram中的问题
2019/09/05 Javascript
原生js无缝轮播插件使用详解
2020/03/09 Javascript
Python实现图片转字符画的示例代码
2017/08/21 Python
python实现类之间的方法互相调用
2018/04/29 Python
Python利用openpyxl库遍历Sheet的实例
2018/05/03 Python
python中copy()与deepcopy()的区别小结
2018/08/03 Python
python多线程抽象编程模型详解
2019/03/20 Python
Python函数参数匹配模型通用规则keyword-only参数详解
2019/06/10 Python
解决Python3下map函数的显示问题
2019/12/04 Python
Python运行提示缺少模块问题解决方案
2020/04/02 Python
Python爬虫爬取微信朋友圈
2020/08/06 Python
韩国知名的家庭购物网站:CJmall
2016/08/01 全球购物
德国体育用品网上商店:SC24.com
2016/08/01 全球购物
官方授权图形T恤和服装:Fifth Sun
2019/06/12 全球购物
如果NULL定义成#define NULL((char *)0)难道不就可以向函数传入不加转换的NULL了吗
2012/02/15 面试题
高职助产应届生自荐信
2013/09/24 职场文书
《登鹳雀楼》教学反思
2014/04/09 职场文书
岗位明星事迹材料
2014/05/18 职场文书
2015年医德考评自我评价
2015/03/03 职场文书