题解 | #获取 url 参数#
获取 url 参数
http://www.nowcoder.com/practice/a3ded747e3884a3c86d09d88d1652e10
将每种情况都分别判断一下就好,面向测试用例编程
// 获取url后的参数或传入的url后的参数 function urlQuery(url, key) { let params = url.split("?")[1].replace(/\#.*/, '') // 判断是否含有参数 if (params) { let paramsList = params.split("&") /** * 判断是否含有key值 * 如果含有key值,只需要针对该key值进行修改即可 */ if (key) { let list = paramsList.filter(val => val.indexOf(key) !== -1) // 如果数组有长度,则证明有值 if (list.length) { let result = [] for (let i = 0; i < list.length; i++) { result.push(list[i].split("=")[1]) } // 如果值不止一个,返回数组 return result.length > 1 ? result : result[0] } return '' } else { let // 排序,将一类参数排列在一起 list = paramsList.sort(), // 记录前一个参数值,如果参数值相同,则归类到同一个数组元素中 preKey = "" return list.reduce((pre, next) => { let [key, val] = next.split("=") if (preKey === key) { // 如果前后两个参数相同,则创建数组并将元素添加进去 if (Array.isArray(pre[key])) { pre[key].push(val) } else { pre[key] = [pre[key], val] } } else { pre[key] = val } preKey = key return pre }, {}) } } return '' }