queryURLParams的三种实现方式

144 阅读1分钟

queryURLParams:获取地址栏中问号后面的传参的信息

function queryURLParams(url){
  // 1.首先获取问号和井号后面的值
  let askIndex = url.indexOf('?'),
  polIndex = url.lastIndexOf('#')
  polIndex === -1 ? polIndex = url.length : null
  
  let askText = askIndex === -1 ? '' : url.substring(askIndex + 1, polIndex),
  polText = url.substring(polIndex + 1);

  // 2.把获取到的结果进行解析,最后拼成一个对象返回
  let obj = {}
  // 处理哈希值(井号后面的值)
  polText.length > 0 ? obj['HASH'] = polText : null;
  // 问号参数的处理
  if (askText) {
      askText.split('&').forEach(item => {
        let arr = item.split('='),
            key = arr[0],
            value = arr[1];
        obj[key] = value;
      });
  }
  return obj
}