获取url参数并拼接「兼容版」

311 阅读1分钟

🌝目的

写在前边:
感谢师兄指导。

业务需求

  1. 获取A地址上的参数,拼接给B。
  2. 忽略参数X、参数Y。保留其它参数。

✅代码

获取参数

function getUrlQueryParams(url) {
  const params = {};
  const excludeParams = ['X', 'Y']; // 不传的参数列表 对应业务2
  const queryArr = url.split('?')
  if (queryArr.length && queryArr[1]) {
      const keyValuePairs = queryArr[1].split('&');
      keyValuePairs.forEach((pair) => {
        const [key, value] = pair.split('=');
        if (key && !excludeParams.includes(key)) {
          // 如果觉得不保险,用(2)替代
          params[key] = value; (1)
          // params[key] = decodeURIComponent(value); (2)
        }
      });
  }
  return params;
}

拼接参数

function spliceUrl(url, params) {
  if (!url) {
    return ''
  }
  let keys = Object.keys(params)
  if (keys.length === 0) {
    return url
  }
  let base = url.indexOf('?') > -1 ? `${url}&` : `${url}?`
  return keys.reduce((acc, v, i) => {
    if (i === 0) {
      return (acc += `${v}=${params[v]}`)
    } else {
      return (acc += `&${v}=${params[v]}`)
    }
  }, base)
}

使用

spliceUrl( ${你要拼接的地址}, getUrlQueryParams(window.location.href)

🎦结语

改了很多之前不对的方法,或者说是兼容性不好的方法;虽然有的方法很好用,用起来很简单。但还是选择最兼容的版本。

特地,感谢师兄的指导。

有用,点个赞再走吧? 👀