2017-10-18 117 views
0

我使用以下代碼(藉助此post)刪除包含「全部」的查詢字符串參數?基於可變參數值刪除查詢字符串部分

事實證明:

https://www.foobar.com/page?year=all&language=all&gender=femalehttps://www.foobar.com/page?gender=female

如何修改,而不是使用 「/所有/」 一個變量的代碼?我希望能夠輕鬆切換出要刪除的參數。

現有代碼(工作但沒有變量):

let src = "https://www.foobar.com/page?year=all&language=all&gender=female"; 
let url = new URL(src); 
let re = /all/; 
let props = [...new URLSearchParams(url.search)] 
      .filter(([key, prop]) => !re.test(prop)); 
url = url.origin + url.pathname; 
let params = new URLSearchParams(); 
props.forEach(([key, prop]) => params.set(key, prop)); 
url += "?" + params.toString(); 

新的代碼(不工作)

let parametervariable = "/somefoovariable/"; 
let src = "https://www.foobar.com/page?year=all&language=all&gender=female"; 
let url = new URL(src); 
let re = parametervariable; 
let props = [...new URLSearchParams(url.search)] 
      .filter(([key, prop]) => !re.test(prop)); 
url = url.origin + url.pathname; 
let params = new URLSearchParams(); 
props.forEach(([key, prop]) => params.set(key, prop)); 
url += "?" + params.toString(); 
variable):** 

新的代碼提供了以下錯誤:「遺漏的類型錯誤:重.test不是函數「

+0

什麼是變量?加入了 – guest271314

+0

@ guest271314。 – Sam

+1

您可以使用'RegExp'構造函數 – guest271314

回答

0

您可以使用RegExp構造函數

let parametervariable = "somefoovariable"; 
let re = new RegExp(parametervariable); 
+0

@Sam您是否期待正斜槓成爲'RegExp'的一部分? '/ all /'是一個'RegExp'文字。 'new RegExp(「all」)'產生'/ all /' – guest271314