Javascript基础:解析 URL Params 为对象
程序员文章站
2022-06-17 18:32:55
一、解析 URL Params 为对象let url = 'http://www.domain.com/?user=anonymous&id=123&id=456&city=%E5%8C%97%E4%BA%AC&enabled'; parseParam(url) /* 结 果 { user: 'anonymous', id: [ 123, 456 ], // 重复出现的 key 要组装成数组,能被转成数字的就转成数字类型 city: '北京', // 中⽂需解码...
一、解析 URL Params 为对象
let url = 'http://www.domain.com/?user=anonymous&id=123&id=456&city=%E5%8C%97%E4%BA%AC&enabled'; parseParam(url)
/* 结 果
{ user: 'anonymous',
id: [ 123, 456 ], // 重复出现的 key 要组装成数组,能被转成数字的就转成数字类型
city: '北京', // 中⽂需解码
enabled: true, // 未指定值得 key 约定为 true
}*/
function parseParam(url) {
const paramsStr = /.+\?(.+)$/.exec(url)[1]; // 将 ? 后⾯的字符串取出来
const paramsArr = paramsStr.split('&'); // 将字符串以 & 分割后存到数组 中
let paramsObj = {};
// 将 params 存到对象中
paramsArr.forEach(param => { if (/=/.test(param)) { // 处理有 value 的参数
let [key, val] = param.split('='); // 分割 key 和 value
val = decodeURIComponent(val); // 解 码
val = /^\d+$/.test(val) ? parseFloat(val) : val; // 判断是否转为数字
if (paramsObj.hasOwnProperty(key)) { // 如果对象有 key,则添加⼀个值
paramsObj[key] = [].concat(paramsObj[key], val);
} else { // 如果对象没有这个 key,创建 key 并设置值
paramsObj[key] = val;
}
} else { // 处理没有 value 的参数
paramsObj[param] = true; } })return paramsObj;
}
本文地址:https://blog.csdn.net/imagine_tion/article/details/111147498
上一篇: 410. Split Array Largest Sum
下一篇: iOS中几种定时器的实现小结
推荐阅读
-
编写JavaScript函数parseQueryString,把URL参数解析为一个对象(代码分析)
-
javascript将url解析为json格式的两种方法
-
编写JavaScript函数parseQueryString,把URL参数解析为一个对象(代码分析)
-
javascript 对象的方式解析url地址参数
-
Javascript基础:解析 URL Params 为对象
-
javascript将url解析为json格式的两种方法
-
JavaScript中prototype为对象添加属性的误区介绍_基础知识
-
JavaScript使用两种方法实现url解析为json格式的实例
-
JavaScript中prototype为对象添加属性的误区介绍_基础知识
-
一个JavaScript函数把URL参数解析成Json对象_javascript技巧