- From: josephmturner <notifications@github.com>
- Date: Sun, 21 Aug 2022 12:12:36 -0700
- To: whatwg/url <url@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
Received on Sunday, 21 August 2022 19:12:49 UTC
When using @ShaneHudson's solution, be aware that `allValues.indexOf("Alice")` will return `-1` if no key/value pair exists for that value. If `query` did not contain any entries with the value `"Alice"`, then `allValues.splice(-1, 1)` would delete the last item in `allValues`, which is probably not what you want. Here's a version which avoids this pitfall: ``` function deleteSearchParamByKeyValue (searchParams, key, value) { const allKeys = [] const entriesToKeep = [] for (const [k, v] of searchParams.entries()) { if (k === undefined || v === undefined) continue allKeys.push(k) if (k === key && v === value) continue entriesToKeep.push([k, v]) } for (const k of allKeys) { searchParams.delete(k) } for (const [k, v] of entriesToKeep) { searchParams.append(k, v) } } ``` Another difference is that this version will delete all entries which match the given `key` and `value`, whereas @ShaneHudson's version will delete only the first match. -- Reply to this email directly or view it on GitHub: https://github.com/whatwg/url/issues/335#issuecomment-1221604291 You are receiving this because you are subscribed to this thread. Message ID: <whatwg/url/issues/335/1221604291@github.com>
Received on Sunday, 21 August 2022 19:12:49 UTC