Skip to content

Latest commit

 

History

History
47 lines (35 loc) · 1.33 KB

#35-queryString分析器.md

File metadata and controls

47 lines (35 loc) · 1.33 KB

题目描述:

在开发当中,我们经常要处理 url。而 url 上的 query string 是我们重点要处理的对象,完成一个 parseQueryString 函数。它接受一个 url 字符串作为参数,返回一个对象,这个对象包含 query string 上的键值对。例如:

parseQueryString('https://scriptoj.com/problems?offset=100&limit=10')

返回:

{ offset: '100', limit: '10'}

特殊情况说明:如果出现 ?name=&age=12 则返回 { name: '', age: '12' },如果 ?name&age=12 则返回 { name: null, age: '12' }

请考虑清楚 query string 可能出现的各种情况,包括可能的出现 hash 的情况(?name=jerry#nice)。

如果需要帮助,可以对照参 URI.js 的执行结果。


参考答案:

const parseQueryString = (url) => {
  var obj = {};
  let index = url.indexOf('#');
  url = index === -1 ? url : url.slice(0, index);
  if(url.indexOf('?') !== -1) {
    let i = url.indexOf("?");
    let arr = url.slice(i+1).split('&');
    arr.forEach(function(item)  {
      item = item.replace(/\=/, '&')
      let t = item.split('&');
      obj[t[0]] = t[1] !== undefined ? t[1] : null;
    })
    return obj;     
  } else {
    return obj;
  }
}