Hola, tengo una matriz de una cadena de consulta con la misma clave y quiero eliminar una de ellas:
https://example.com/something?orderby=date&orderby=price&orderby=amount
const [searchParams, setSearchParams] = useSearchParams(); let udpatedSearchParams = new URLSearchParams(searchParams.toString()); const remove = (key) => { udpatedSearchParams.delete(key); setSearchParams(udpatedSearchParams.toString()); }; remove("orderby") // => https://example.com/something?pero quiero esto:
remove("orderby","amount") // => https://example.com/something?orderby=date&orderby=priceNo tiene el nombre de variable más elegante, pero hace el trabajo.
const remove = (key, url) => { let reqUrl = url.split("?"); let paramArray = reqUrl[1].split("&"); let result = paramArray.reduce(function (a, b) { console.log(b); if (b.split("=")[1] !== key) { return [...a, b]; } else { return [...a]; } }, []); return reqUrl[0] + "?" + result.join("&"); }; remove( "price", "https://example.com/something?orderby=date&orderby=price&orderby=amount" );la salida será:
'https://example.com/something?orderby=date&orderby=amount'