let url = 'http://www.domain.com/?user=anonymous&id=123&id=456&city=%E5%8C%97%E4%BA%AC&enabled';
function parseParam(url){
; // 将字符串以 & 分割后存到数组中
let paramsArr = url.slice(url.indexOf('?')+1).split('&')
// 将 params 存到对象中
let paramsObj = {};
paramsArr.forEach(item => {
// 处理有 value 的参数
if(item.indexOf('=')>-1){
// 分割 key 和 value
let [key,val] = item.split('=');
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[item] = true;
}
})
return paramsObj;
}
console.log(parseParam(url)) // { user: 'anonymous', id: [ '123', '456' ], city: '北京', enabled: true }
上一篇
js实现查找字符串中出现最多的字符和个数
例: abbcccddddd -> 字符最多的是d,出现了5次
let str = "abcabcabcbbccccc";
let num = 0;
let char = '';
// 使其按照一定的次序排列
2020-05-16
下一篇
js实现转化为驼峰命名
var s1 = "get-element-by-id"
// 转化为 getElementById
var fn = function(s) {
return s.replace(/-\w/g,
2020-05-16