URLSearchParams & shape URL params
URLSearchParams
https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams

var paramsString = "q=URLUtils.searchParams&topic=api";
var searchParams = new URLSearchParams(paramsString);
//Iterate the search parameters.
for (let p of searchParams) {
console.log(p);
}
searchParams.has("topic") === true; // true
searchParams.get("topic") === "api"; // true
searchParams.getAll("topic"); // ["api"]
searchParams.get("foo") === null; // true
searchParams.append("topic", "webdev");
searchParams.toString(); // "q=URLUtils.searchParams&topic=api&topic=webdev"
searchParams.set("topic", "More webdev");
searchParams.toString(); // "q=URLUtils.searchParams&topic=More+webdev"
searchParams.delete("topic");
searchParams.toString(); // "q=URLUtils.searchParams"


"use strict";
/**
*
* @author xgqfrms
* @license MIT
* @copyright xgqfrms
*
* @description SearchParamsGenerator
* @augments
* @example
*
* @param {String} search
* @param {Boolean} debug
*
*/
const SearchParamsGenerator = (search = ``, debug = false) => {
let result = {};
// do something...
let params = new URLSearchParams(search);
for (const param of params) {
let key = ``,
value = ``;
key = param[0];
value = param[1];
result[key] = value;
// console.log(`param =`, param);
// param = ["gilcode", "600570.SH"];
// param = ["skin", "white"];
// param = ["name", "恒生电子"];
// param = ["type", "0"];
parseInt("恒生电子", 10);
// NaN
parseInt("0", 10);
// 0
parseInt("11", 2);
// 3
parseInt("11", 10);
// 11
}
return result;
};
let search = decodeURIComponent(window.location.search);
// "?gilcode=600570.SH&skin=white&name=恒生电子&type=0"
SearchParamsGenerator(search);
// {gilcode: "600570.SH", skin: "white", name: "恒生电子", type: "0"}
SearchParamsGenerator(search).gilcode;
// "600570.SH"
// view/stock/index.html?code=600570.SH&skin=white&name=恒生电子&type="0"
// /view/stock/index.html?code=600570.SH&skin=white&name="恒生电子"&type="0"
// decodeURIComponent(window.location.href);
// "f10/view/stock/index.html?code=600570.SH&skin=white&name=恒生电子&type=0"
// decodeURI(window.location.href);
// "/f10/view/stock/index.html?code%3D600570.SH%26skin%3Dwhite%26name%3D恒生电子%26type%3D0"
let searchParams = new URLSearchParams(search);
searchParams.has("code"); // true
searchParams.get("abc"); // null
searchParams.get("code"); // "600570.SH"
searchParams.getAll("code"); // ["600570.SH"]
searchParams.append("xyz", "666");
searchParams.toString();
// "code=600570.SH&skin=white&name=%22%E6%81%92%E7%94%9F%E7%94%B5%E5%AD%90%22&type=%220%22&xyz=666"
decodeURIComponent(searchParams.toString());
// "code=600570.SH&skin=white&name="恒生电子"&type="0"&xyz=666"
searchParams.set("code", "600580.SH");
searchParams.get("code");
// "600580.SH"
searchParams.delete("code");
searchParams.entries();
searchParams.keys();
searchParams.values();
searchParams.sort();
for (const param of params) {
let key = ``,
value = ``;
key = param[0];
value = param[1];
console.log(`param =`, param);
}
for (const param of params.entries()) {
let key = ``,
value = ``;
key = param[0];
value = param[1];
console.log(`param =`, param);
}
for (const param of params.keys()) {
let key = ``,
value = ``;
key = param[0];
value = param[1];
console.log(`param =`, param);
}
for (const param of params.values()) {
let key = ``,
value = ``;
key = param[0];
value = param[1];
console.log(`param =`, param);
}
OK
"use strict";
/**
*
* @author xgqfrms
* @license MIT
* @copyright xgqfrms
*
* @description SearchParamsGenerator
* @augments
* @example
*
* @param {String} search
* @param {Boolean} debug
*
*/
const SearchParams = (search = ``, debug = false) => {
const params = new URLSearchParams(search);
let result = {};
for (let param of params) {
let key = ``,
value = ``;
key = param[0];
value = param[1];
result[key] = value;
}
return result;
};
const SearchParamsGenerator = (search = ``, debug = false) => {
const params = new URLSearchParams(search);
let result = {},
entries = [...params.entries()],
keys = [...params.keys()],
values = [...params.values()];
for (let param of params) {
let key = ``,
value = ``;
key = param[0];
value = param[1];
result[key] = value;
}
return {
result,
entries,
keys,
values
};
};
let search = decodeURIComponent(window.location.search);
// "?code=600570.SH&skin=white&name=恒生电子&type=0"
SearchParams(search);
SearchParams(search).code;
// "600570.SH"
SearchParamsGenerator(search);
SearchParamsGenerator(search).result.code;
// "600570.SH"
ES6 modules
"use strict";
/**
*
* @author xgqfrms
* @license MIT
* @copyright xgqfrms
*
* @description SearchParamsGenerator
* @augments
* @example
*
* @param {String} search
* @param {Boolean} debug
*
*/
const SearchParams = (search = ``, debug = false) => {
const params = new URLSearchParams(search);
let result = {};
for (let param of params) {
let key = ``,
value = ``;
key = param[0];
value = param[1];
result[key] = value;
}
return result;
};
const SearchParamsGenerator = (search = ``, debug = false) => {
const params = new URLSearchParams(search);
let result = {},
entries = [...params.entries()],
keys = [...params.keys()],
values = [...params.values()];
for (let param of params) {
let key = ``,
value = ``;
key = param[0];
value = param[1];
result[key] = value;
}
return {
result,
entries,
keys,
values
};
};
export default SearchParams;
export {
SearchParams,
SearchParamsGenerator
};
/*
let search = decodeURIComponent(window.location.search);
// "?code=600570.SH&skin=white&name=恒生电子&type=0"
SearchParams(search);
SearchParams(search).code;
// "600570.SH"
SearchParamsGenerator(search);
SearchParamsGenerator(search).result.code;
// "600570.SH"
*/
URL

https://developer.mozilla.org/en-US/docs/Web/API/URL/searchParams
https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils/searchParams

refs
xgqfrms 2012-2020
www.cnblogs.com 发布文章使用:只允许注册用户才可以访问!
URLSearchParams & shape URL params的更多相关文章
- URLSearchParams & Location & URL params parse
URLSearchParams & Location & URL params parse URL params parse node.js env bug node.js & ...
- URLSearchParams 接口
URLSearchParams 接口定义了很多个用来处理 URL 参数串的方法 他可以把对象转变成url上面查询信息的写法,例如a=1&b=2 可以把请求路由中的字符串 key=1 ,拼接 ...
- "奇葩家园“之 asyncTask 与 url 下载篇
asyncTask 是android提供的一个轻量级的异步处理的类,有3个泛型参数,params,progress,result params: 启动任务执行的时候传入的参数比如请求的 url 地址 ...
- 我对Backbone中url属性的理解
Model中有一个url属性,而且有一个urlRoot属性. Collection中也有一个url属性. // 这是Model中的url方法 url: function() { var base = ...
- android 项目中使用到的网络请求框架以及怎样配置好接口URL
我们在做项目中一定少不了网络请求,如今非常多公司的网络请求这块好多都是使用一些比較好的开源框架,我项目中使用的是volley,如今讲讲一些volley主要的使用,假设想要具体的了解就要去看它的源代码了 ...
- Android开发之使用URL訪问网络资源
Android开发之使用URL訪问网络资源 URL (UniformResource Locator)对象代表统一资源定位器,它是指向互联网"资源"的指针. 资源能够是简单的文件或 ...
- java http url post json
import java.io.IOException; import java.io.InputStream; import java.io.OutputStreamWriter; import ja ...
- JavaScript 功能类 Url.js
简书原文 这个类的主要目的是为了方便平时编码中的Url类型的数据操作 Github 全局名称 全局名称是由源码的最后一行代码确定的,默认为Url,如存在相同名称的对象会抛出异常: 可以通过 requi ...
- 【Python】【BugList13】req = requests.get(url=target)报错: (Caused by SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:777)')
[代码] # -*- coding:UTF-8 -*- import requests if __name__ == '__main__': target = 'https://unsplash.co ...
随机推荐
- 亿级用户下的新浪微博平台架构 前端机(提供 API 接口服务),队列机(处理上行业务逻辑,主要是数据写入),存储(mc、mysql、mcq、redis 、HBase等)
https://mp.weixin.qq.com/s/f319mm6QsetwxntvSXpKxg 亿级用户下的新浪微博平台架构 炼数成金前沿推荐 2014-12-04 序言 新浪微博在2014年3月 ...
- 消息中间件——rocketmq环境配置
产生原因 RocketMQ概述 RocketMQ 是一款分布式.队列模型的消息中间件,具有以下特点: 能够保证严格的消息顺序 提供丰富的消息拉取模式 高效的订阅者水平扩展能力 实时的消息订阅机制 亿级 ...
- Solon rpc 1.3.1 发布,推出Cloud接口与配置规范
Solon 是一个微型的Java RPC开发框架.项目从2018年启动以来,参考过大量前人作品:历时两年,3500多次的commit:内核保持0.1m的身材,超高的跑分,良好的使用体验.支持:Rpc. ...
- 系列trick - 随机
系列trick - 随机 不断更新中,欢迎来提供idea 随机的字符串 出现次数 \(\ge 2\) 的子串期望长度是 \(\log n\) 两个随机串的期望LCP,LCSuf,LCSub长度是 \( ...
- java的volatile关键字(笔记)
Volatile修饰的成员变量在每次被线程访问时,都强迫从主内存中重读该成员变量的值.而且,当成员变量发生变化时,强迫线程将变化值回写到主内存.这样在任何时刻,两个不同的线程总是看到某个成员变量的同一 ...
- hadoop知识点总结(三)YARN设计理念及基本架构
YARN设计理念与基本架构 1,MRv1的局限性:扩展性差,可靠性差,资源利用率低,无法支持多种计算框架 2,YARN基本设计思想 1)基本框架对比 Hadoop1.0中,JobTracker由资源管 ...
- HPE 交换机基础配置
1.交换机命名 (config)# hostname POE-SW 2.vlan创建及端口划分 1)端口加入vlan,两种方式 (config)# vlan 2 (vlan-2)# untagged ...
- (15)Linux命令基本格式
1.命令提示符 登录系统后,第一眼看到的内容是: [root@localhost ~]# 这就是 Linux 系统的命令提示符.那么,这个提示符的含义是什么呢? []:这是提示符的分隔符号,没有特殊含 ...
- jvm系列五-java内存模型初览(1)
本文转载自:再有人问你Java内存模型是什么,就把这篇文章发给他. 网上有很多关于Java内存模型的文章,在<深入理解Java虚拟机>和<Java并发编程的艺术>等书中也都有关 ...
- hdu5637 Transform (bfs+预处理)
Problem Description A list of n integers are given. For an integer x you can do the following operat ...