如何在JS中的仅路径网址中添加参数?

问题描述

我正在尝试将参数添加到仅路径的url(因为我代码中的其他地方可以解决源问题),但是我在下面的代码中遇到错误,因为它没有将其视为有效的url 。 (编辑:也忘记添加检查以确认路径URL中是否存在“ / checkout /”)

function appendCountryParam(link,tag){
  var url = new URL(link); 
  url.searchParams.append('tag',tag); 
  return url.href;
}

我想知道是否有一种将参数添加到仅路径url的干净方法。我自己编写了一个函数,但是看起来有点太复杂了,我直接将我的代码PHP转换为js。

function addTagParam(link,tag) {
  if (!link.includes('/checkout/')) {
    return link;
  }

  if (link.includes('?')) {
    const removeSlash = link.replace(/\/$/,'');
    return `${removeSlash}&tag=${tag}`;
  }

  const linkWithSlash = link.replace(/\/$|$/,'/');
  return `${linkWithSlash}?tag=${tag}`;
}

编辑:我仅在路径中传递url,并且我希望它以相同的格式返回,但是具有指定的参数,所以类似这样:/page/user/winsome/?tag=true

解决方法

像第二个示例一样自己创建字符串是我的首选方法?除非您有很多参数,否则无需增加额外的复杂性。

如果您确实想花哨的话,可以代替URLSearchParams的实例(在调用.toString之后),就像在this answer中一样。