编写一个解析 URL 的函数 parseParam(url)
输入
http://www.getui.com?user=superman&id=345&id=678&city=%E6%9D%AD%E5%B7%9E&enabled
期望的结果
{
user: 'superman',
id: [ 345, 678 ], // 重复出现的 key 要组装成数组,能被转成数字的就转成数字类型
city: '杭州', // 中文需解码
enabled: true, // 未指定值的 key 约定为 true
}
手撸parseParam
function parseParam(url) {
const [href, params] = url.split('?')
const result = {}
params && params.split('&').map(item => {
let [key, value = true] = item.split('=')
value = typeof value === 'boolean' ? value : decodeURIComponent(value) // 转译中文
if (!result[key]) {
result[key] = value
} else {
result[key] = result[key] instanceof Array ? [].concat(...result[key], value) : [].concat(result[key], value)
}
})
return result
}
// 执行
parseParam('http://www.getui.com?user=superman&id=345&id=678&city=%E6%9D%AD%E5%B7%9E&enabled')
// {user: "superman", id:["345", "678"], city: "杭州", enabled: true}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。