Signatur
Beschreibung
Die Methode values() des Interfaces URLSearchParams gibt einen Iterator zurück, der nacheinander alle Werte der enthaltenen Suchparameter als Zeichenketten liefert. Die Reihenfolge entspricht der Reihenfolge, in der die Paare im Query-String stehen bzw. eingefügt wurden. Die Schlüssel werden dabei ignoriert.
Kommt ein Schlüssel mehrfach vor (z. B. ?tag=js&tag=css), liefert der Iterator jeden einzelnen Wert. Die Werte sind bereits dekodiert: Prozent-Kodierungen werden aufgelöst und + wird zu einem Leerzeichen.
Typische Einsatzfälle sind das schnelle Auslesen aller Werte, etwa um sie zu prüfen, zu zählen oder in ein Array umzuwandeln ([...params.values()] oder Array.from()). Brauchst du auch die Schlüssel, nimm entries() oder iteriere direkt über das Objekt. Für alle Werte eines bestimmten Schlüssels ist getAll(name) besser geeignet.
Rückgabewert
string liefert.Beispiele
Alle Werte eines Query-Strings ausgeben
const params = new URLSearchParams('suche=javascript&seite=2&sort=neu');
for (const value of params.values()) {
console.log(value);
}
Mehrfache Schlüssel und Dekodierung
const params = new URLSearchParams('tag=js&tag=css&titel=Hallo+Welt%21');
const werte = [...params.values()];
console.log(werte);
Prüfen, ob ein Filterwert gesetzt ist (aktuelle Seiten-URL)
const url = new URL('https://shop.example/produkte?farbe=rot&groesse=M&farbe=blau');
const werte = Array.from(url.searchParams.values());
const hatLeereWerte = werte.some((v) => v.trim() === '');
console.log(werte.includes('blau'), hatLeereWerte);
Iterator manuell mit next() abarbeiten
const params = new URLSearchParams({ a: '1', b: '2' });
const it = params.values();
console.log(it.next());
console.log(it.next());
console.log(it.next());
// Wichtig · Fallstricke
- Der Rückgabewert ist ein Iterator, kein Array: Methoden wie
map()oderfilter()stehen nicht direkt zur Verfügung (außer über die neuen Iterator-Helper). Wandle ihn bei Bedarf mit[...params.values()]oderArray.from()um. - Ein Iterator lässt sich nur einmal durchlaufen. Für eine zweite Iteration rufst du
values()erneut auf. - Werte sind immer Zeichenketten. Zahlen wie
"2"musst du selbst umwandeln, z. B. mitNumber(). - Ein Parameter ohne Wert (
?debug) liefert einen leeren String"". - Veränderst du das Objekt während der Iteration (z. B. mit
delete()), kann das zu übersprungenen Einträgen führen. Erzeuge vorher eine Kopie mitArray.from(). - Kompatibilität: in allen modernen Browsern, in Web Workern und in Node.js (global ab Version 10) verfügbar; im Internet Explorer gibt es sie nicht.