前言

ASP.NET Core 写过一篇关于操作 query 的 ASP.NET Core – 操作 Uri 和 Query. 前端偶尔也会需要做出 query.

URLSearchParams

之前讲 JavaScript – Fetch 就已经有用到 URLSearchParams 了. 但主要是用来生成 query. 这篇 read / write 都讲.

Read From URL

  1. const query = new URLSearchParams(location.search);

在前端, search 指的就是 ?Query.

location.search 返回的是 ?key=value 这样的 string. 它是还没有 decode 的哦.

new URLSearchParams 初始化传入一个 string, 它就会去 parse 它. 这个 string 最好是以 ? 开头. 或者 search 去掉问号只留下 key=value&key1=value2 这样.

/path?key=value <-- 这样就不 ok, 会 parse 失败哦.

get and getAll

  1. const value = query.get('key'); // no match return null
  2. const values: string[] = query.getAll('key'); // no match return empty array

getAll 是针对 same key 的情况, 比如 'key=value&key=value2'

获取到的值都是 decode 好了的.

for of 遍历

URLSearchParams 是 iterable

  1. for (const [key, value] of query) {
  2. console.log("key value", [key, value]);
  3. }

如果 same key, 那么会 loop 2 次.

has, append, delete, toString

  1. const query = new URLSearchParams();
  2. const hasKey = query.has("key");
  3. query.append("key", "= will auto encode"); // auto encode
  4. query.delete("key");
  5. query.append("key", "= will auto encode");
  6. const finalSearch = query.toString(); // not starts with ?
  7. console.log("finalSearch", finalSearch); // key=%3D+will+auto+encode

顾名思义, 留意注释的部分就可以了

Encode/Decode 空格

Space 空格 encode 后会变成 + 加号,而不是 %20 哦

  1. const urlSearchParams = new URLSearchParams();
  2. urlSearchParams.append('key', 'value 1');
  3. console.log(urlSearchParams.toString()); // key=value+1

decode 时则 + 加号,或者 %20 都会变成 space 空格。

  1. const urlSearchParams = new URLSearchParams('key1=value+1&key2=value%202');
  2. console.log(urlSearchParams.get('key1')); // value 1
  3. console.log(urlSearchParams.get('key2')); // value 2

BOM – 操作 Query的更多相关文章

  1. BOM操作

    BOM操作 //浏览器对象模型 opener=window.open(页面的url,打开方式) opener.document.body.style.background="red" ...

  2. Yii2 数据操作Query Builder

    转载地址: http://blog.csdn.net/hzqghost/article/details/44117081 Yii2 数据操作Query Builder 分类: Yii22015-03- ...

  3. JS的BOM操作语法

    整理了一下JS的BOM操作语法,这里记录一下. <!DOCTYPE html> <html> <head> <meta charset="utf-8 ...

  4. day45:JS中的json&JS的BOM操作和DOM操作

    目录 1.补充:CSS中的弹性盒子 2.JS中json的序列化 3.JS中的BOM操作 3.1 location操作 3.2 计时器 4.JS中的DOM操作 4.1 创建标签 4.2 查找标签 4.3 ...

  5. 5、前端--js常量、变量、5种基本数据类型(number string boolean undefined object)、运算符、流程控制、三元运算符、函数、自定义对象、内置对象、BOM操作

    变量与常量 在JS中声明变量需要使用关键字 老版本 var(全部都是全局变量) 新版本 let(可以声明局部变量) # 推荐使用let(其实问题不大) 在JS中声明常量也需要使用关键字 const # ...

  6. 常用BOM操作 DOM操作 事件 jQuery类库

    目录 BOM操作 常用BOM操作 三种弹出框 alert confirm prompt 定时任务 setTimeout 循环定时 setInterval DOM操作 查找标签 直接查找 间接查找 操作 ...

  7. BOM与DOM之BOM操作

    目录 一:BOM与DOM操作 1.BOM与DOM操作 二:BOM操作 1.常用的Window方法: 2.案例实操 3.打开新窗口 4.关闭当前页面 三:window的子对象 1.navigator对象 ...

  8. BOM操作、DOM操作、jQuery类库

    BOM操作.DOM操作.jQuery类库 一.BOM操作 BOM(Browser Object Model)是指浏览器对象模型,它使JavaScript有能力与浏览器进行对话 1.window对象 浏 ...

  9. js--Dom Bom操作

    –      基础 –     内置对象 ● String对象:处理所有的字符串操作 ● Math对象:处理所有的数学运算 ● Date对象:处理日期和时间的存储.转化和表达 ● Array对象:提供 ...

  10. Day3JavaScript(一)JavaScript初识以及bom操作

    JavaScript简介 什么是JavaScript 弱类型,动态类型,基于原型的直译性的编程语言.1995年netscape(网景)在导航者浏览器中设计完成. JavaScript的特点 1.与HT ...

随机推荐

  1. 解码 xsync 的 map 实现

    解码 xsync 的 map 实现 最近在寻找 Go 的并发 map 库的时候,翻到一个 github 宝藏库,xsync (https://github.com/puzpuzpuz/xsync) . ...

  2. AT_abc180_d 题解

    洛谷链接&Atcoder 链接 本篇题解为此题较简单做法及较少码量,并且码风优良,请放心阅读. 题目简述 现有 \(STR\) 和 \(EXP\) 两个变量,初始化分别为 \(X\) 和 \( ...

  3. KU FPGA FLASH boot失败debug

    原因 新板子回来后,测试flash 烧录正常,但是无法BOOT,此时SPI设置为X4模式,使用内部时钟,速度90M.烧录过程不报错,校验也正常. FLASH理论支持最大速度108M,90M应该还好.另 ...

  4. UE5 打不开

    在游戏开发中,出现了UE打不开的情况 初步推测,新增了接口Attacker, 而我们的DefaultPawn可能一下子实现了两个接口造成的 而这两个接口都在一个插件里,一个是c++实现的,一个是蓝图实 ...

  5. useRoute 函数的详细介绍与使用示例

    title: useRoute 函数的详细介绍与使用示例 date: 2024/7/27 updated: 2024/7/27 author: cmdragon excerpt: 摘要:本文介绍了Nu ...

  6. mybatisplus关于驼峰命名法与下划线的映射

    今天遇到一个很坑的事情,我在测试之前的案例的时候我有一个字段的名字是typeId,我调试之后发现插入出现了错误. 开启sql日志之后我发现mybatisplus自动把我的typeId改成type_id ...

  7. RHCA rh442 005 (NICE FIFO RR) 资源强占与分配 cpuset

    cgroup 容器 控制服务访问 limits 控制用户 进程管理 [root@servera ~]# ps -aux | more USER PID %CPU %MEM VSZ RSS TTY ST ...

  8. 我用Awesome-Graphs看论文:解读X-Stream

    X-Stream论文:<X-Stream: Edge-centric Graph Processing using Streaming Partitions> 前面通过文章<论文图谱 ...

  9. Excel函数-相对引用和绝对引用

    1.相对引用 公式填充时引用的相对位置不变,行和列.序号都相对递增 2.绝对引用 公式填充时应用的单元格绝对位置不变,行和列.序号都不变.绝对引用的符号是"$",也可以快捷键按F4 ...

  10. Jmeter函数助手26-logn

    logn函数用于记录一条日志并返回空值. String to be logged (and returned):要打印的字符 Log level (default INFO) or OUT or ER ...