URLSearchParams 接口定义处理 URL 参数串
基本使用方法如下
/*
* URLSearchParams属性
* @语法:new URLSearchParams(parameter);
*/
(function(){
var str = "http://www.domain.com/?user=Alan&id=123&id=456";
var searchParams = new URLSearchParams(str);
// let...of 语法(迭代对象)
for(let p of searchParams){
// console.log(p);
}
/*
* URLSearchParams.append()
* @添加新的key/value到URL中
*/
searchParams.append("city", encodeURIComponent("深圳")); /*
* URLSearchParams.has()
* @查询是否存在,返回一个boolean值
*/
searchParams.has("id"); // true
/*
* URLSearchParams.get()
* @返回相关联的第一个值
*/
searchParams.get("id"); // /*
* URLSearchParams.getAll()
* @返回所有相同key的值
*/
searchParams.getAll("id"); // ["123", "456"] /*
* URLSearchParams.set()
* @设置key的value值,如果有多个,删除其他的
*/
searchParams.set("id", "789"); /*
* searchParams.delete()
* @删除所有参数列表key与value值,重复的key都被删除
*/
searchParams.delete("id"); /*
* searchParams.entries()
* @返回所有键值对key/value
*/
for(let pair of searchParams.entries()){
console.log(pair[0]+ ', '+ pair[1]);
} /*
* searchParams.keys()
* @返回所有键key
*/
for(let key of searchParams.keys()){
console.log(key);
} /*
* searchParams.values()
* @返回所有值
*/
for(let value of searchParams.values()) {
console.log(value);
} /*
* searchParams.toString()
* @返回修改过的URL
*/
searchParams.toString();
console.log(searchParams.toString());
}());
JS 编写函数从下面的 URL 串中解析出所有的参数
http://www.domain.com/?user=anonymous&id=123&id=456&city=%E5%8C%97%E4%BA%AC&d&enabled
期望的返回结果格式如下:
{
user: 'anonymous',
id: [123, 456], // 重复出现的 key 要组装成数组,能被转成数字的就转成数字类型
city: '北京', // 中文
enabled: true, // 未指定值的 key 约定值为 true
}
谋定而后动,动手前一定要搞清楚问题。怎样才算是把问题搞清楚了?要清楚输入的特征,是否会出现各种奇怪的输入
防御性编程,检测是否为字符串
function parse(str){
if(typeof str !== "string"){
return;
}
var paramObj = {};
var decode = decodeURIComponent(str); // 先解码
var parsePart = decode.split("?#")[decode.split("?#").length-1]; // 截断不需要部分
var paramArr = parsePart.split("&");
for(var i = 0; i < paramArr.length; i++){
var tmp = paramArr[i].split("=");
var key = tmp[0];
var value = tmp[1] || true;
// console.log("关键字是:" + key, "值是:" + value);
if(typeof paramObj[key] === "undefined"){
paramObj[key] = value;
}else{
var newValue = paramObj[key] + "," + value; // 有多个重复的先连接字符串,然后才分割开
paramObj[key] = newValue.split(",");
}
}
// console.log(paramObj);
}
URLSearchParams 接口定义处理 URL 参数串的更多相关文章
- URLSearchParams接口用来处理浏览器的url
URLSearchParams 接口定义了一些实用的方法来处理 URL 的查询字符串. URLSearchParams.append()插入一个指定的键/值对作为新的搜索参数. URLSearchPa ...
- URLSearchParams 接口
URLSearchParams 接口定义了很多个用来处理 URL 参数串的方法 他可以把对象转变成url上面查询信息的写法,例如a=1&b=2 可以把请求路由中的字符串 key=1 ,拼接 ...
- C语言定义从URL中获取键值的接口
环境:centos7下,对客户端http请求进行解析,来获取有效键值(包括汉字). 头文件 /* 这是一份关于从Http请求信息中提取键值的接口声明的头文件 */ #ifndef _HEAD_H_ # ...
- 定义一个方法get_page(url),url参数是需要获取网页内容的网址,返回网页的内容。提示(可以了解python的urllib模块)
定义一个方法get_page(url),url参数是需要获取网页内容的网址,返回网页的内容.提示(可以了解python的urllib模块) import urllib.request def get_ ...
- Thymeleaf 之 内置对象、定义变量、URL参数及标签自定义属性
Thymeleaf 之 内置对象.定义变量.URL参数及标签自定义属性 本文章来自[知识林] 如标题所述,这篇文章主要讲述Thymeleaf中的内置对象(list解析.日期格式化.数字格式化等).定义 ...
- 使用jquery获取url及url参数的方法及定义JQuery扩展方法
1.jquery获取url很简单,代码如下: window.location.href; 其实只是用到了javascript的基础的window对象,并没有用jquery的知识. 2.jquery获取 ...
- [开发笔记]-使用jquery获取url及url参数的方法
使用jquery获取url以及使用jquery获取url参数是我们经常要用到的操作 1.jquery获取url很简单,代码如下: window.location.href; 其实只是用到了javasc ...
- 使用jquery获取url及url参数的方法
使用jquery获取url以及使用jquery获取url参数是我们经常要用到的操作 1.jquery获取url很简单,代码如下: window.location.href; 其实只是用到了javasc ...
- CDN页面刷新接口定义[高升]
一 . 任务 分发 工作流程步骤 1. 合作方按照高升定义的 json 数据格式向高升分发接口 post 任务,高升分发接口会根据接收情况即时反馈接收成功还是失败的结果.二 . 高升 分发 接口 定义 ...
随机推荐
- ansible register when: result | succeeded when: item.rc != 0
ansible register 这个功能非常有用.当我们需要判断对执行了某个操作或者某个命令后,如何做相应的响应处理(执行其他 ansible 语句),则一般会用到register . 举个例子: ...
- etl获取转换文件名
- 另外一款超棒的响应式布局jQuery插件 – Freetile.js
在线演示 我们曾经介绍过俩款知名的响应式布局插:isotope和masonary,今天我们这里再介绍一款相当不错的响应式布局插件 – Freetile.js,使用它同样可以生成超酷的动态布局效果.相信 ...
- WCF(一)
摘自:http://www.cnblogs.com/yank/p/3653160.html WCF入门教程(一)简介 1.WCF是什么? WCF( Windows Communication Foun ...
- Ubuntu 12.04 root用户登录设置
Ubuntu 12.04默认是不允许root登录的,在登录窗口只能看到普通用户和访客登录.以普通身份登陆Ubuntu后我们需要做一些修改,普通用户登录后,修改系统配置文件需要切换到超级用户模式,在终端 ...
- par函数的ann 参数-控制图片的注释信息
ann 参数控制图片的x轴和y轴标签以及标题是否显示 默认值为TRUE, 所以图片有对应的信息时,会显示出来,代码示例 plot(1:5, 1:5, main = "title", ...
- php纯原生实现数组二分法
代码如下 $arr = [1,3,5,7,9];//$arr = range(1,10000);var_dump(find($arr, 2)); function find(array $arr, $ ...
- PHP+tcpdf的生成
项目中,可能用到额 查看:http://www.sucaihuo.com/php/217.html
- sourcetree管理git
下载地址: https://www.sourcetreeapp.com/ 跳过注册: 到注册登录页面打开文件目录%LocalAppData%\Atlassian\SourceTree\ 会发现有个文件 ...
- C# 基础小知识之yield 关键字
对于yield关键字我们首先看一下msdn的解释: 如果你在语句中使用 yield 关键字,则意味着它在其中出现的方法.运算符或 get 访问器是迭代器. 通过使用 yield 定义迭代器,可在实现自 ...