location

删除url上某参数并替换当前url

function deleteUrlParams(param) {
  const params = {};
  delete params[param];
  let search = '?';
  Object.keys(params).forEach((key) => {
    search += `${key}=${params[key]}&`;
  });
  search = search.substring(0, search.length - 1);
  const url = `${window.location.origin}${window.location.pathname}${search}`;
  window.history.replaceState({}, null, url);
}

获取链接参数

MDN URLSearchParamsopen in new window

/**
 * @description: 获取链接参数
 * @param {String} url
 * @return {*}
 */
function getUrlParams(url) {
  const newUrl = new URL(url || window.location.href);
  const urlSearchParams = new URLSearchParams(newUrl.search);
  const params = {};
  for (const [key, value] of urlSearchParams) {
    params[key] = value;
  }
  return params;
}

/**
 * @description: 获取链接参数
 * @param {String} url
 * @return {*}
 */
function getUrlParams(url) {
  const newUrl = new URL(url || window.location.href);
  const urlSearchParams = new URLSearchParams(newUrl.search);
  const params = Object.fromEntries(urlSearchParams.entries());
  return params;
}

// 使用示例
// console.log('urlParams', getUrlParams());
// console.log('urlParams', getUrlParams('http://www.baidu.com?name1=aaa&name2=bbb'));

设置链接参数

MDN URLSearchParamsopen in new window

/**
 * @description: 设置链接参数
 * @param {String} url 
 * @param {Object} params
 * @return {*}
 */
function setUrlParams(url = '', params = {}) {
  const newUrl = new URL(url || window.location.href);
  const { origin, pathname, search } = newUrl;
  const urlSearchParams = new URLSearchParams(search);
  for (const item in params) {
    urlSearchParams.set(item, params[item]);
  }
  return `${origin}${pathname}?${urlSearchParams.toString()}`;
}

// 使用示例
// console.log(setUrlParams('', {text1: 'xxx', text2: 'yyy'}));
// console.log(setUrlParams('http://www.baidu.com?name1=aaa&name2=bbb', {text1: 'xxx', text2: 'yyy'}));

url-search-params-polyfill

npm install url-search-params-polyfill -- save

import 'url-search-params-polyfill';

const searchParams = new URLSearchParams(params);
const newParams = searchParams.toString();