URLSearchParams în JavaScript

URL și codificare Browserele moderne, Node.js 10+

Citește și construiește parametrii unei adrese (?pagina=2&sort=pret), cu codificare automată.

Sintaxă
const p = new URLSearchParams("?a=1&b=2");
p.get(nume)
p.set(nume, valoare)
p.append(nume, valoare)
p.delete(nume)
p.has(nume)
p.toString()

Ce face URLSearchParams

URLSearchParams se creează dintr-un text (cu sau fără ?), dintr-un obiect sau din perechi. get returnează prima valoare a unui parametru (sau null), getAll pe toate, set înlocuiește, append adaugă, delete și has șterg și verifică (opțional doar o anumită valoare).

toString() returnează textul codificat, fără ?. sort() ordonează parametrii după nume, util pentru adrese de cache. Obiectul se parcurge cu for...of, forEach, entries(), keys() și values().

Parametri

Parametru Descriere
initial Opțional. Un text, un obiect sau un tablou de perechi.

Ce returnează

Un obiect URLSearchParams.

Exemple

Exemplul 1: Citirea parametrilor

const p = new URLSearchParams("?q=laptop&culoare=negru&culoare=gri&pagina=2");

console.log(p.get("q"), p.get("culoare"), p.getAll("culoare"));
console.log(p.has("pagina"), p.has("culoare", "alb"), p.get("lipsa"));
console.log(Number(p.get("pagina")) + 1);

Rezultat

laptop negru [ 'negru', 'gri' ]
true false null
3

Exemplul 2: Construirea și modificarea

const p = new URLSearchParams({ q: "cărți & reviste", pagina: 1 });

p.set("pagina", 3);
p.append("filtru", "nou");
p.append("filtru", "redus");
p.delete("filtru", "nou");
p.sort();
console.log(p.toString());
console.log(`/cauta?${p}`);

Rezultat

filtru=redus&pagina=3&q=c%C4%83r%C8%9Bi+%26+reviste
/cauta?filtru=redus&pagina=3&q=c%C4%83r%C8%9Bi+%26+reviste

Exemplul 3: Parcurgere

const p = new URLSearchParams("oras=Iași&judet=IS");

for (const [cheie, valoare] of p) console.log(cheie, "=", valoare);
p.forEach((valoare, cheie) => console.log(`${cheie}: ${valoare}`));
console.log([...p.keys()], [...p.values()], p.entries().next().value);

Rezultat

oras = Iași
judet = IS
oras: Iași
judet: IS
[ 'oras', 'judet' ] [ 'Iași', 'IS' ] [ 'oras', 'Iași' ]

Greșeli frecvente

  • Uiți că valorile citite sunt texte: p.get("pagina") + 1 dă "21". Transformă cu Number().
  • Te aștepți ca spațiul să fie codificat ca %20. URLSearchParams îl scrie ca +, formatul formularelor HTML.

Comenzi înrudite

  • new URL(): Desface o adresă URL în părți (domeniu, cale, parametri) și o construiește corect la loc.
  • Object.fromEntries: Construiește un obiect dintr-o listă de perechi [cheie, valoare]; inversul lui Object.entries.
  • encodeURIComponent / decodeURIComponent: Codifică un text ca să poată fi pus sigur într-o adresă URL (spații, diacritice, &, =) și îl decodifică.