Vue-获取地址栏参数
作者:互联网
// 获取地址栏参数 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]}
标签:Vue,return,name,参数,obj,key,urlObj,地址栏 来源: https://www.cnblogs.com/WebMadman/p/14066450.html