// 获取地址栏参数
getUrl(obj, bool) { // 该方法使用说明在底部
let urlObj = {}
let str = location.href
if (str.indexOf('?') != -1) {
// 获取地址栏参数
let num = str.indexOf("?")
str = str.substr(num + 1)
let arr = str.split("&")
arr.forEach(item => {
let query = item.split("=")
urlObj[query[0]] = JSON.parse(decodeURI(query[1]))
})
// 设置回调值
if (!obj) {
return urlObj
}
if (typeof(obj) == 'string') { // obj为字符串时,bool表示希望得到的值类型:Number(数字类型)、String(字符串类型),默认 String
if (bool) {
return bool(urlObj[obj])
} else {
return urlObj[obj]
}
} else { // 参数为数组对象,bool表示 是否 仅return传递的参数;true:表示仅 return 传递的参数,false 表示处理传递的参数并返回所有地址栏参数,默认false
// bool = true/false
// obj = [{
// name: '参数名称'/['', '', ...],
// concat: '', // name为数组时,合并name内字段值,新生成的数组名称
// type: '希望得到的值类型', Number/String // type可不设置,默认String
// delete: true, // 是否忽略该参数而得到地址栏其他参数,默认false
// }
// ......
// ]
if (bool) { // 仅return传递的参数
let onlyObj = {}
obj.forEach(key => {
if (typeof(key.name) == 'string') { // name为字符串
if (urlObj[key.name] !== undefined) {
if (key.type) {
onlyObj[key.name] = key.type(urlObj[key.name])
} else {
onlyObj[key.name] = urlObj[key.name]
}
}
} else { // name为数组
onlyObj[key.concat] = []
key.name.forEach(item => {
if (urlObj[item]) {
onlyObj[key.concat].push(urlObj[item])
}
})
}
})
return onlyObj
} else { // 非仅return传递的参数
obj.forEach(key => {
if (typeof(key.name) == 'string') { // name为string
if (urlObj[key.name] !== undefined) {
if (key.type) {
urlObj[key.name] = key.type(urlObj[key.name])
} else {
urlObj[key.name] = urlObj[key.name]
}
if (key.delete) {
delete urlObj[key.name]
}
}
} else { // name为数组
urlObj[key.concat] = []
key.name.forEach(item => {
if (urlObj[item]){
if (key.type) {
urlObj[key.concat].push(key.type(urlObj[item]))
} else {
urlObj[key.concat].push(urlObj[item])
}
}
})
}
})
return urlObj
}
}
} else {
if (typeof(obj) == 'string') {
return ''
} else {
return {}
}
}
}
// ————————————————————————————————————————————————————————————————————使用说明
getUrl(obj, bool) {} 获取地址栏参数
(示例地址栏:http://office.youxiake.com/v2/card/order?id=1&status=2)
1-1、当什么都不传时,return地址栏所有参数
示例: commonJs.getUrl('id') // {id: '1', status: '2'}
1-2、当 obj='' 字符串时,bool: 表示希望得到的值类型:Number/String,默认String
示例: commonJs.getUrl('id') // '1'
commonJs.getUrl('id', Number) // 1
1-3、当obj=[{}]数组对象时,bool表示 是否 仅return传递的参数;true:表示仅 return 传递的参数,false 表示处理传递的参数并返回所有地址栏参数,默认false
obj = [{
name: '参数名称' / ['参数名称',...], // 参数名称,name为数组时会合并name内的值并生成新的数组(必传)
concat: '', // name为数组时,合并name内字段值,新生成的数组名称(非必传)
type: '', // 希望得到的该值类型:Number/String,默认 String(非必传)
delete: true, // 是否忽略该参数而得到地址栏其他参数,默认false(非必传)
}
......
]
示例:commonJs.getUrl([{name: 'id'}], true) // {id: '1'}
commonJs.getUrl([{name: 'id', type: Number}], true) // {id: 1}
commonJs.getUrl([{name: 'id', type: Number}]) // {id: 1, status: '2'}
commonJs.getUrl([{name: ['id', 'status'], concat: 'concatName', type: Number}]) // {concatName: [1, 2]}