// 獲取地址欄參數 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]}