我有一个以下形式的网址:https://www.example.com?tag[]=mountain&tag[]=hill&tag[]=pimple
https://www.example.com?tag[]=mountain&tag[]=hill&tag[]=pimple
现在我想删除其中之一,假设 tag[]=hill。我知道,我可以使用正则表达式,但我使用 URLSearchParams 来添加这些,所以我也想用它来删除它们。不幸的是 delete() 函数会删除具有相同密钥的所有对。
tag[]=hill
URLSearchParams
delete()
有没有办法只删除一个特定的键值对?
您也可以将其添加到 URLSearchParams 的原型中,以便您始终可以在代码中轻松使用它。
URLSearchParams.prototype.remove = function(key, value) { const entries = this.getAll(key); const newEntries = entries.filter(entry => entry !== value); this.delete(key); newEntries.forEach(newEntry => this.append(key, newEntry)); }
现在您可以从 URLSearchParams 中删除特定的键值对,如下所示:
searchParams.remove('tag[]', 'hill');
做这样的事情:
const tags = entries.getAll('tag[]').filter(tag => tag !== 'hill'); entries.delete('tag[]'); for (const tag of tags) entries.append('tag[]', tag);
您也可以将其添加到 URLSearchParams 的原型中,以便您始终可以在代码中轻松使用它。
现在您可以从 URLSearchParams 中删除特定的键值对,如下所示:
做这样的事情: