前言

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

URLSearchParams

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

Read From URL

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

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

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

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

for of 遍历

URLSearchParams 是 iterable

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

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

has, append, delete, toString

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

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

Encode/Decode 空格

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

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

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

const urlSearchParams = new URLSearchParams('key1=value+1&key2=value%202');
console.log(urlSearchParams.get('key1')); // value 1
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. 24 年 “年薪百万” 的 Java 程序员,都要学什么?

    大家好,我是程序员鱼皮.前几天我看了一篇由国外的 Java 架构师大佬分享的文章,主题是 "Java 架构师必会的 20 个技术". 光看这个标题,就知道在国外做 Java 开发, ...

  2. 输入Javac提示不是内部或外部命令

    先去百度搜索"jdk下载"下载最新版jdk,并安装,安装目录不用去更改,直接默认就好,下载完了之后,双击打开安装,jdk安装完成后,会接着安装jre包,(jre和jdk是配对的,不 ...

  3. 手动设置提示在此环境中不可导入Django

    手动设置提示在此环境中不可导入Django 环境参数添加manage.py中的代码'DJANGO_SETTINGS_MODULE', 'codeProject.settings'

  4. 基于微信小程序+Springboot线上租房平台设计和实现【三端实现小程序+WEB响应式用户前端+后端管理】

    感兴趣的可以先收藏起来,大家在毕设选题,项目以及论文编写等相关问题都可以给我加好友咨询 一. 前言介绍: 近年来,我国的社会经济迅猛发展,社会对于房屋租赁的需求也在不断增多.在房屋租赁企业中面对繁琐而 ...

  5. 数据仓库建模工具之一——Hive学习第三天

    1.Hive的基本操作 1.1 Hive库操作 1.1.1 创建数据库 1)创建一个数据库,数据库在HDFS上的默认存储路径是/hive/warehouse/*.db. create database ...

  6. 学习笔记--Java 运算符

    Java 运算符 算术运算符 关系运算符 逻辑运算符 位运算[略] 赋值运算符 字符串连接符 三元运算符 Java 运算符 按照功能划分: 功能 运算符 算术运算符 +.-.*./.++.--.% 关 ...

  7. postfix&dovecot搭建邮件服务器

    本篇参考 https://blog.51cto.com/5001660/2377785和小翔博客https://www.liuyixiang.com/post/113927.html. 邮件发送和接受 ...

  8. 初看vue3源码

    因为工作的原因又回到了vue的领域,需要加深对vue和vue生态的了解 也许平时比较多人手机看别人解析怎么看vue源码的,自己动手看vue源码的还是比较少,这次我想自己动手看看 首先 吧代码获取到本地 ...

  9. [rCore学习笔记 021]多道程序与分时任务

    写在前面 本随笔是非常菜的菜鸡写的.如有问题请及时提出. 可以联系:1160712160@qq.com GitHhub:https://github.com/WindDevil (目前啥也没有 导读 ...

  10. tmux使用教程:终端神器tmux:多任务管理大师

    文字版教程: 阮一峰 Tmux 使用教程 视频教程: 终端神器tmux:多任务管理大师