URLSearchParams
La API URLSearchParams proporciona una forma de obtener datos en los parámetros de una URL. Consta de un constructor y varios métodos para trabajar.
// URL = https://filisantillan.com/?name=Fili&age=24
const urlParams = window.location.search;
const params = new URLSearchParams(urlParams);
let name = params.get("name");
let age = params.get("age");
console.log(name); // Fili
console.log(age); // 24Constructor - urlSearchParams()
Crea y devuelve instancia del objeto URLSearchParams.
const params = new URLSearchParams(data);
A dicho objeto se le pueden pasar diferentes tipos de datos para utilizar sus métodos.
1. Usando el objeto URL
const myUrl = new URL("https://filisantillan.com/?name=fili&age=24");
const params = new URLSearchParams(url.search);2. Usando strings
const params  = new URLSearchParams(window.location.search);
const params2 = new URLSearchParams("?name=Fili&age=24");
3. arrays (secuencia de pares) u objetos
const params  = new URLSearchParams([["name", "Fili"], ["age", 24]]);
const params2 = new URLSearchParams({ name: "Fili", age: 24 });
Métodos
get()
El método get devuelve el primer valor asociado al parámetro dado. Si no se llaga a encontrar, el valor será null.
// URL = https://filisantillan.com/?name=Fili&age=24
let name = params.get("name"); // Fili
let age = params.get("age"); // 24
getAll()
El método getAll devuelve todos los valores asociados al parámetro dado. Si no se llegan a encontrar, el valor será null.
// URL = https://filisantillan.com/?name=Fili&age=24&name=Roberto
let name = params.getAll("name"); // ["Fili", "Roberto"]
has()
El método has devuelve un valor booleano indicando true si existe el parámetro dado y false si no existe.
// URL = https://filisantillan.com/?name=Fili&age=24
let name = params.has("name") // true
let phone = params.has("phone") // false
toString()
El método toString devuelve el string de consulta.
// URL = https://filisantillan.com/?name=Fili&age=24
params.toString(); // name=Fili&age=24
append()
El método append agrega un nuevo parámetro/valor (key/value) a la los parámetros de búsqueda.
// URL = https://filisantillan.com/?name=Fili&age=24
params.append("instagram", "fili.santillan");
params.toString(); // name=Fili&age=24&instagram=fili.santillan
set()
El método set establece un nuevo valor para el parámetro dado. Si el parámetro no existe, el método lo crea. Si llegan a ver más valores que coincidan, el método los elimina.
// URL = https://filisantillan.com/?name=Fili&age=24
params.set("name", "Roberto"); 
params.toString(); // name=Roberto&age=24
// URL = https://filisantillan.com/?age=24
params.set("name", "Roberto");
params.toString(); // age=24&name=Roberto// URL = https://filisantillan.com/?name=Fili&age=24&name=Luis
params.set("name", "Roberto");
params.toString(); // name=Roberto&age=24delete()
El método delete elimina el parámetro dado y todos sus valores asociados de los parámetros de búsqueda.
// URL = https://filisantillan.com/?name=Fili&age=24&name=Roberto
params.delete("name");
params.toString(); // age=24entries()
El método entries devuelve un iterator que permite la iteración a través de todos los pares key y value.
// URL = https://filisantillan.com/?name=Fili&age=24&instagram=fili.santillan
for(const [key, value] of params.entries()) {
	console.log(`${key}: ${value}`);
}
// name: Fili
// age: 24
// instagram: fili.santillan
Si no entiendes la sintaxis [key, value] te recomiendo ver mi BitSnack sobre desestructuración.
keys()
El método keys devuelve un iterator que permite la iteración a través de todas las llaves (keys) obtenidas.
// URL = https://filisantillan.com/?name=Fili&age=24&instagram=fili.santillan
for(const key of params.keys()) {
  console.log(key);
}
// name
// age
// instagram
values()
El método values devuelve un iterator que permite la iteración a través de todos los valores (values) obtenidos.
// URL = https://filisantillan.com/?name=Fili&age=24&instagram=fili.santillan
for(const value of params.values()) {
  console.log(value);
}
// Fili
// 24
// fili.santillan
forEach()
El método forEach permite la iteración a través de todos los valores contenidos en el objeto mediante una función callback.
// URL = https://filisantillan.com/?name=Fili&age=24&instagram=fili.santillan
params.forEach((value, key) => {
	console.log(`${key}: ${value}`);
})
// name: Fili
// age: 24
// instagram: fili.santillansort()
El método sort ordena todos los pares (key/value) contenidos en el objeto. El orden se clasifica basándose en los puntos de código Unicode de las llaves (keys).
// URL = https://filisantillan.com/?name=Fili&age=24&instagram=fili.santillan
params.sort();
params.toString(); // age=24&instagram=fili.santillan&name=Fili