Note: This feature is available in Web Workers.
The URLSearchParams() constructor creates and returns a new URLSearchParams object.
new URLSearchParams()
new URLSearchParams(options)options OptionalOne of:
application/x-www-form-urlencoded format. A leading '?' character is ignored. This is the only form that decodes percent-encoding, and decodes + to U+0020 SPACE.FormData object — with an iterator that produces a sequence of string pairs. Note that File entries will be serialized as [object File] rather than as their filename (as they would in an application/x-www-form-urlencoded form).A URLSearchParams object instance.
The following example shows how to create a URLSearchParams object from various inputs.
// Retrieve params via url.search, passed into constructor
const url = new URL("https://example.com?foo=1&bar=2");
const params1 = new URLSearchParams(url.search);
// Get the URLSearchParams object directly from a URL object
const params1a = url.searchParams;
// Pass in a string literal
const params2 = new URLSearchParams("foo=1&bar=2");
const params2a = new URLSearchParams("?foo=1&bar=2");
// Pass in a sequence of pairs
const params3 = new URLSearchParams([
["foo", "1"],
["bar", "2"],
]);
// Pass in a record
const params4 = new URLSearchParams({ foo: "1", bar: "2" });This example shows how to build a new URL with an object of search parameters from an existing URL that has search parameters.
const url = new URL("https://example.com/?a=hello&b=world");
console.log(url.href);
// https://example.com/?a=hello&b=world
console.log(url.origin);
// https://example.com
const addParams = {
c: "a",
d: 2,
e: false,
};
const newParams = new URLSearchParams([
...Array.from(url.searchParams.entries()), // [["a","hello"],["b","world"]]
...Object.entries(addParams), // [["c","a"],["d",2],["e",false]]
]).toString();
console.log(newParams);
// a=hello&b=world&c=a&d=2&e=false
const newURL = new URL(`${url.origin}${url.pathname}?${newParams}`);
console.log(newURL.href);
// https://example.com/?a=hello&b=world&c=a&d=2&e=false
// Here it is as a function that accepts (URL, Record<string, string>)
const addSearchParams = (url, params = {}) =>
new URL(
`${url.origin}${url.pathname}?${new URLSearchParams([
...Array.from(url.searchParams.entries()),
...Object.entries(params),
])}`,
);