FE-Interview icon indicating copy to clipboard operation
FE-Interview copied to clipboard

请编写一个 JavaScript 函数 parseQueryString,它的用途是把 URL 参数解析为一个对象,url="http://iauto360.cn/index.php?key0=0&key1=1&key2=2"

Open lgwebdream opened this issue 5 years ago • 5 comments

lgwebdream avatar Jul 06 '20 17:07 lgwebdream

扫描下方二维码,获取答案以及详细解析,同时可解锁800+道前端面试题。

lgwebdream avatar Jul 06 '20 17:07 lgwebdream

const url = "http://iauto360.cn/index.php?key0=0&key1=1&key2=2";
function parseParams(url) {
  if (!url) return null;
  const paramsObj = {};
  const [, queryString] = url.split('?');
  const queryStringArr = queryString.split('&');
  for (const queryObj of queryStringArr) {
    let [key, value] = queryObj.split('=');
    value = decodeURIComponent(value);
    if (paramsObj[key]) {
      paramsObj[key] = Array.isArray(paramsObj[key]) ? paramsObj[key] : [paramsObj[key]];
      paramsObj[key].push(value);
    } else {
      paramsObj[key] = value;
    }
  }
  return paramsObj;
}
const paramsObj = parseParams(url);
console.log(paramsObj);
// { key0: '0', key1: '1', key2: '2' }

GolderBrother avatar Sep 01 '20 16:09 GolderBrother

const main = (url) => {
  const params = url.split('?')[1]
  const paramsArr = params.split('&')
  return paramsArr.reduce((pre, cur) => {
    const curParam = cur.split('=')
    return { ...pre, [curParam[0]]: curParam[1] }
  }, {})
}

DaphnisLi avatar May 19 '23 09:05 DaphnisLi


const parseQueryString = url => {
  const [_, params] = url.split("?");
  const result = {};
  params.split("&").map(item => {
    const [key, value] = item.split("=");
    result[key] = value;
  });
  return result;
};

gaohan1994 avatar May 05 '24 07:05 gaohan1994