删除一个作为数组传递给URL的URL查询字符串?

时间:2017-05-29 20:55:38

标签: javascript jquery regex url query-string

以下是网址:

www.example.com/?param%5B%5D=A&param%5B%5D=B

%5B%5D部分[]param作为数组传递,该数组以网址编码。

现在,我想删除其中一个参数,所需的输出是:

www.example.com/?param%5B%5D=B

我搜索了这个,但一无所获! 所有答案都是关于删除单个值参数,而不是多个。

更新

我不知道参数的确切位置,即URL可能是这样的:

www.example.com/?test=124&test2=456&param%5B%5D=A&param%5B%5D=B

2 个答案:

答案 0 :(得分:1)

以下是如何从URL中提取参数的示例。

现在,如何在用户用户交互表单(UI)上使用它们取决于您。



// Use this to get the document location:
var ActualURL = document.location.href;
console.log("This snippet URL: "+ActualURL);


// Only for this demo, I "simulate" a URL.
// ActualURL is overwritten here.
var ActualURL = "www.example.com/?param%5B%5D=A&param%5B%5D=B";
console.log("FAKED URL: "+ActualURL);

var domain = ActualURL.split("?")[0];
console.log("Domain: "+domain);

var params = ActualURL.split("?")[1];

var param_array = params.split("&");

for (i=0;i<param_array.length;i++){
  console.log( "Param #"+i+": "+param_array[i] );
}

console.log("Rebuilted URL with only param #2: "+domain+"?"+param_array[1]);
&#13;
&#13;
&#13;

答案 1 :(得分:1)

您可以利用URL WebAPI。

https://developer.mozilla.org/en-US/docs/Web/API/URL

var base = 'http://www.example.com/'
var query = '?param%5B%5D=A&param%5B%5D=B';

var url = new URL(base + query);

var params = new URLSearchParams(url.search);


var filteredParams = params.getAll('param[]')
  .filter(function(el) {
    return el !== "A";
  }).map(function(el){
    return ['param[]', el];
  });

var newParams = new URLSearchParams(filteredParams);

var url = new URL(base + '?' + newParams.toString() );
console.log(url.toString());