Salve,
sul web ho trovato due funzioni, una mi aggiunge alla query string un parametro e l'altra la toglie. Un po di codice per capire meglio:

Html:
codice HTML:
<a href="#" class="servizio" data-id="1">1</a>
<a href="#" class="servizio" data-id="2">2</a>
<a href="#" class="servizio" data-id="3">3</a>

function updateQueryStringParameter(uri, key, value) {
  var re = new RegExp("([?&])" + key + "=[^&#]*", "i");
  if (re.test(uri)) {
    return uri.replace(re, '$1' + key + "=" + value);
  } else {
    var matchData = uri.match(/^([^#]*)(#.*)?$/);
    var separator = /\?/.test(uri) ? "&" : "?";
   return matchData[0] + separator + key + "=" + value;
  }
}

function removeQueryStringParameter(uri, key, value){
var re = new RegExp("([?&])" + key + "=.*?(&|$)", "i");
var separator = uri.indexOf('?') !== -1 ? "&" : "?";
    if (uri.match(re)) {
        return uri.replace(re, '');
    }
}
    
$('.servizio').click(function () {
var servizio = $(this).data('id');
var href      = $location).attr('href');
if($(this).parent().hasClass('active')){
var url = removeQueryStringParameter(href, 'serv', encodeURIComponent(servizio));
location.href = url;
} else {
var url = updateQueryStringParameter(href, 'serv', encodeURIComponent(servizio));
location.href = url;
}
});
Queste due funzioni fanno il loro lavoro e cioè www.miosito.com?serv=1 se clicco sopra il link con la classe active elimina dalla query string serv=... se no lo modifica, invece io vorrei che cliccando sui link mi desse questo risultato www......com?serv=1,2,3 se clicco sul link con la classe active toglie dal parametro serv solo il numero che ho cliccato. Porto questo esempio: https://www.getyourguide.it/s?q=Milano&srv=prt|wca, in questo caso prt e wca sono separati da | ma fa lo stesso.

Qualche consiglio?