如何使用 URLSearchParams 仅删除具有相同键的多个键值对中的一个?
How to remove only one of multiple key value pairs with the same key using URLSearchParams?
我有一个 url 这种形式:https://www.example.com?tag[]=mountain&tag[]=hill&tag[]=pimple
现在我想删除其中一个,比方说 tag[]=hill
。我知道,我可以使用正则表达式,但我使用 URLSearchParams
来添加这些,所以我也想用它来删除它们。不幸的是,delete()
函数删除了具有相同键的所有对。
有没有办法只删除一个特定的键值对?
做这样的事情:
const tags = entries.getAll('tag[]').filter(tag => tag !== 'hill');
entries.delete('tag[]');
for (const tag of tags) entries.append('tag[]', tag);
您也可以将它添加到 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');
我有一个 url 这种形式:https://www.example.com?tag[]=mountain&tag[]=hill&tag[]=pimple
现在我想删除其中一个,比方说 tag[]=hill
。我知道,我可以使用正则表达式,但我使用 URLSearchParams
来添加这些,所以我也想用它来删除它们。不幸的是,delete()
函数删除了具有相同键的所有对。
有没有办法只删除一个特定的键值对?
做这样的事情:
const tags = entries.getAll('tag[]').filter(tag => tag !== 'hill');
entries.delete('tag[]');
for (const tag of tags) entries.append('tag[]', tag);
您也可以将它添加到 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');