首頁  >  問答  >  主體

如何使用URLSearchParams刪除多個具有相同鍵的鍵值對中的一個?

我有一個以下形式的網址:https://www.example.com?tag[]=mountain&tag[]=hill&tag[]=pimple

#

現在我想刪除其中之一,假設 tag[]=hill。我知道,我可以使用正規表示式,但我使用 URLSearchParams 來新增這些,所以我也想用它來刪除它們。不幸的是 delete() 函數會刪除具有相同金鑰的所有對。

有沒有辦法只刪除一個特定的鍵值對?

P粉214089349P粉214089349293 天前466

全部回覆(2)我來回復

  • P粉904450959

    P粉9044509592023-12-31 19:04:33

    您也可以將其新增至 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');

    回覆
    0
  • P粉725827686

    P粉7258276862023-12-31 13:27:11

    做這樣的事情:

    const tags = entries.getAll('tag[]').filter(tag => tag !== 'hill');
    entries.delete('tag[]');
    for (const tag of tags) entries.append('tag[]', tag);

    回覆
    0
  • 取消回覆