通过删除不需要的查询参数同时保留其他参数来返回干净URL的最佳方法是什么?
我需要为此页面的路由设置重定向规则,这些路由具有不需要的查询参数。所以这就是默认不需要的查询参数的样子。
https://some-test-url.com/b/laptops/1117?clubId=6612&offset=0&rootDimension=pcs_availability%253AOnlinepipsymbBrand%253ADell&searchCategoryId=1117&selectedFilter=all&sortKey=relevance&sortOrder=1
它应该重定向到清理过的 URL。它应该在这些条件下从 URL 中清除这些默认值。对于limit它应该删除 48 和 20。我假设应该保留下面未列出的任何其他查询参数,因为它们不是默认值。
searchCategoryId=all
selectedFilter=all
sortKey=relevance&sortOrder=1
limit=48 on desktop or limit=20 on mweb
clubId ever
offset=0
所以从上面清理过的 URL 应该是这样的
https://some-test-url.com/b/laptops/1117?rootDimension=pcs_availability%253AOnlinepipsymbBrand%253ADell
但例如,如果它不是默认的查询参数
www.test.com/blah?offset=40&selectedFilter=online&clubId=3422
它应该返回
www.test.com/blah?offset=40&selectedFilter=online
处理这个问题的最佳方法是什么?我尝试用正则表达式来做,但我无法得到预期的结果,因为它有点复杂。谢谢您的帮助!
回答
您可以使用URLSearchParams所有主要浏览器都支持的:https : //developer.mozilla.org/en-US/docs/Web/API/URLSearchParams
就像是:
const params = new URLSearchParams(window.location.href);
for (var key of params.keys()){
// do something with logic from your allow/block list
// such as removing it:
params.delete(key);
}