7. 解析 URL 参数
小于 1 分钟
7. 解析 URL 参数
解析 URL 中的参数列表。
*/
export function parseParam(url) {
const paramsStr = /.+\?(.+)$/.exec(url)[1] // 将 ? 后面的字符串取出来
const paramsArr = paramsStr.split('&') // 将字符串以 & 分割后存到数组中
const paramsObj = {}
// 将 params 存到对象中
paramsArr.forEach((param) => {
if (/=/.test(param)) { // 处理有 value 的参数
const [key, val_encoded] = param.split('=') // 分割 key 和 value
const val_decoded = decodeURIComponent(val_encoded) // 解码
const val = /^\d+$/.test(val_decoded) ? Number.parseFloat(val_decoded) : val_decoded // 判断是否转为数字
if (paramsObj.hasOwnProperty(key)) { // 如果对象有 key,则添加一个值
paramsObj[key].push(val)
}
else { // 如果对象没有这个 key,创建 key 并设置值
paramsObj[key] = val
}
}
else { // 处理没有 value 的参数
paramsObj[param] = true
}
修改了原文的代码,转换为更简单的移入操作,并全部使用 const
定义变量。
+ paramsObj[key].push(val);
- paramsObj[key] = [].concat(paramsObj[key], val);