Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 什么';删除不需要的查询参数,同时保留其他参数,这是返回干净URL的最佳方法?_Javascript_Reactjs - Fatal编程技术网

Javascript 什么';删除不需要的查询参数,同时保留其他参数,这是返回干净URL的最佳方法?

Javascript 什么';删除不需要的查询参数,同时保留其他参数,这是返回干净URL的最佳方法?,javascript,reactjs,Javascript,Reactjs,我需要有这个页面的路由重定向规则,其中有不需要的查询参数。这就是默认的不需要的查询参数 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 它应该重定向到已清理

我需要有这个页面的路由重定向规则,其中有不需要的查询参数。这就是默认的不需要的查询参数

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中清除这些内容。对于
限制
应同时删除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

比如:

const params=新的URLSearchParams(window.location.href);
for(params.keys()的var key){
//使用允许/阻止列表中的逻辑执行某些操作
//例如删除它:
参数删除(键);
}

这几乎总是正确的解决方案。但是,如果您正在为无法控制的服务修改URL,则有些边缘情况可能会变得更加复杂。有时,参数的特定顺序或存在很重要。例如,我无法在Facebook上共享我所在州政府的网站URL,因为它们添加了
fbclid
参数,在这个过程中删除了空的查询字符串参数。其中一个参数必须存在,即使它没有值。这些都是罕见的案例,但我已经看到了像这样的网站为数不多。谢谢!这绝对是我要找的!我将实现这个,看看它是如何运行的!事实上,它似乎不受最坏浏览器的支持。不幸的是,IE支持它是可行的。是的,当我说主要浏览器我不打算包括IE时,我认为IE在这一点上是一个不受欢迎的浏览器。您仍然可以使用多边形填充进行此操作: