URLSearchParams快速解析URL查询参数实现

 更新时间:2023年06月13日 11:41:57   作者:天問  
这篇文章主要为大家介绍了URLSearchParams快速解析URL查询参数实现,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

一、URLSearchParams 构造函数

浏览器 Window 内置的 URLSearchParams 接口定义了一些实用的方法来处理 URL 的查询字符串,再也不用 & 字符串分割的方式去解析 url query 参数了。

JS && URLSearchParams

URLSearchParams() 构造器创建并返回一个新的 URLSearchParams 对象。开头的 ? 字符会被忽略。

let oUSP = URLSearchParams()
console.log(oUSP)
/*
URLSearchParams {}
  [[Prototype]]: URLSearchParams
    append: ƒ append()
    delete: ƒ delete()
    entries: ƒ entries()
    forEach: ƒ forEach()
    get: ƒ ()
    getAll: ƒ getAll()
    has: ƒ has()
    keys: ƒ keys()
    set: ƒ ()
    sort: ƒ sort()
    toString: ƒ toString()
    values: ƒ values()
    constructor: ƒ URLSearchParams()
    Symbol(Symbol.iterator): ƒ entries()
    Symbol(Symbol.toStringTag): "URLSearchParams"
    [[Prototype]]: Object
* */

二、URLSearchParams 方法

该接口不继承任何属性。

  • append:插入一个指定的键/值对作为新的搜索参数。
  • delete:从搜索参数列表里删除指定的搜索参数及其对应的值。
  • set:设置一个搜索参数的新值,假如原来有多个值将删除其他所有的值。
  • keys:返回iterator 此对象包含了键/值对的所有键名。
  • values:返回iterator 此对象包含了键/值对的所有值。
  • entries:返回一个iterator可以遍历所有键/值对的对象。
  • forEach:插入一个指定的键。
  • get:获取指定搜索参数的第一个值。
  • getAll:获取指定搜索参数的所有值,返回是一个数组。
  • has:返回 Boolean 判断是否存在此搜索参数。
  • sort:按键名排序。
  • toString:返回搜索参数组成的字符串,可直接使用在 URL 上。

三、使用示例

let { search } = new URL('https://tiven.cn?id=12&dt=2022-10-10&sort=desc')
console.log(search) // ?id=12&dt=2022-10-10&sort=desc
// 创建 URLSearchParams 对象
let p1 = new URLSearchParams(search);
let p2 = new URLSearchParams([["id", 12], ["dt", '2022-10-10'], ["sort", 'desc']]);
let p3 = new URLSearchParams({"id": 12 , "dt": '2022-10-10', "sort": 'desc'});
console.log(p1.toString()) // id=12&dt=2022-10-10&sort=desc
console.log(p2.toString()) // id=12&dt=2022-10-10&sort=desc
console.log(p3.toString()) // id=12&dt=2022-10-10&sort=desc
// entries
for (let [k, v] of p1.entries()) {
  console.log(k, v)
}
// forEach
p1.forEach((v,k)=>{
  console.log(k, v)
})
// has 判断是否包含某个查询参数
console.log(p1.has('id')) // true
console.log(p1.has('name')) // false
// get 获取某个参数值
console.log(p1.get('id')) // 12
console.log(p1.get('age')) // null
// append 添加键值对
p1.append('name', 'Tiven')
console.log(p1.toString()) // id=12&dt=2022-10-10&sort=desc&name=Tiven
// delete 删除键值对
p1.delete('name')
console.log(p1.toString()) // id=12&dt=2022-10-10&sort=desc
// sort 排序
p1.sort()
console.log(p1.toString()) // dt=2022-10-10&id=12&sort=desc

注意: URLSearchParams 构造函数不会解析完整 URL,但是如果字符串起始位置有 ? 的话会被去除。

let p = new URLSearchParams('https:tiven.cn?id=12&name=Tiven')
console.log(p.has('id'))  // false
console.log(p.get('id'))  // null
console.log(p.toString()) // https%3Ativen.cn%3Fid=12&name=Tiven

以上就是URLSearchParams快速解析URL查询参数实现的详细内容,更多关于URLSearchParams解析URL的资料请关注脚本之家其它相关文章!

相关文章

  • JS运行耗时操作的延时显示方法

    JS运行耗时操作的延时显示方法

    今天用JS允许一个ActiveX,挺耗时的,想在允许时提示用户正在允许,而不至于漏斗在那里
    2010-11-11
  • Webpack的Loader和Plugin的区别

    Webpack的Loader和Plugin的区别

    这篇文章主要介绍了Webpack的Loader和Plugin的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • JavaScript计算字符串实际长度方法示例

    JavaScript计算字符串实际长度方法示例

    这篇文章主要为大家介绍了JavaScript计算字符串实际长度方法示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • Bootstrap布局之栅格系统详解

    Bootstrap布局之栅格系统详解

    这篇文章主要为大家详细介绍了Bootstrap布局之栅格系统,小编对Bootstrap栅格系统(布局)也很陌生,特分享整理这篇文章,感兴趣的小伙伴们可以参考一下
    2016-06-06
  • js将字符串中的每一个单词的首字母变为大写其余均为小写

    js将字符串中的每一个单词的首字母变为大写其余均为小写

    本文主要介绍了javascript将字符串中的每一个单词的首字母变为大写其余均为小写的方法。具有一定的参考价值,下面跟着小编一起来看下吧
    2017-01-01
  • js微信扫描二维码登录网站技术原理

    js微信扫描二维码登录网站技术原理

    这篇文章主要介绍了js微信扫描二维码登录网站技术原理,具有一定的参考价值,有需要的可以了解一下。
    2016-12-12
  • Javascript promise异步编程浅析

    Javascript promise异步编程浅析

    这篇文章主要介绍了Javascript promise异步编程,Promise 是异步编程的一种解决方案,可以替代传统的解决方案–回调函数和事件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2023-04-04
  • 微信小程序实现流程进度的图样式功能

    微信小程序实现流程进度的图样式功能

    最近正在做微信小程序,需要实现一个流程进度的图样式,下面小编给大家带来了微信小程序实现流程进度的图样式功能实例代码,需要的朋友参考下吧
    2018-01-01
  • 超实用的全新JavaScript事件Scrollend实例详解

    超实用的全新JavaScript事件Scrollend实例详解

    这篇文章主要为大家介绍了超实用的全新JavaScript事件Scrollend实例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • JS 仿支付宝input文本输入框放大组件的实例

    JS 仿支付宝input文本输入框放大组件的实例

    下面小编就为大家带来一篇JS 仿支付宝input文本输入框放大组件的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11

最新评论