期望輸出
獲取到所有的 query 參數,組成一個對象。
const url = 'http://domain.com/?user=anonymous&city=chengdu'
parseParam(url)
結果:
{
user:'liujiaqi',
city: 'yichang'
}
解題分析:
1.使用 & 對字符串進行分割,得到數組
2.去掉數組第一個值 ? 前的字符
3.遍歷數組獲取對應的 key 和 value
數組類型的參數,需要判斷特殊處理
對象類型的參數,也需要特殊處理
const parseParam = (url) => { // 分割URL let paramArrays = url.split("&"); // 去除第一個值中的域名 paramArrays[0] = paramArrays[0].split("?") paramArrays[0].shift() paramArrays[0] = paramArrays[0].join('?'); console.log('paramArrays', paramArrays); // 定義一個空對象接收 key 和 value const obj = {} paramArrays.forEach(ele => { const itemArr = ele.split('=') let key = itemArr[0] let val = itemArr[1] let arr = [] if (key.includes('[]')) { key = key.replace('[]', '') arr.push(val) } else if (val.indexOf('{') === 0) { val = JSON.parse(val) } obj[key] = val console.log('obj', obj); }); }
