Start · Sprachen · JavaScript · Referenz · URLSearchParams.values()

URLSearchParams.values()

Methode

Gibt einen Iterator zurück, der alle Werte der Name-Wert-Paare eines <code>URLSearchParams</code>-Objekts in Einfügereihenfolge liefert.

seit JavaScript Baseline: alle modernen Browser, Node.js 10+ Kategorie: webapi

Signatur

URLSearchParams.prototype.values()

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

Typ
Iterator<string>
Beschreibung
Ein neuer URLSearchParams-Iterator (iterierbar), der alle Werte als 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);
}
javascript 2 neu

Mehrfache Schlüssel und Dekodierung

const params = new URLSearchParams('tag=js&tag=css&titel=Hallo+Welt%21');

const werte = [...params.values()];
console.log(werte);
[ 'js', 'css', 'Hallo Welt!' ]

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);
true false

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());
{ value: '1', done: false } { value: '2', done: false } { value: undefined, done: true }

// Wichtig · Fallstricke

  • Der Rückgabewert ist ein Iterator, kein Array: Methoden wie map() oder filter() stehen nicht direkt zur Verfügung (außer über die neuen Iterator-Helper). Wandle ihn bei Bedarf mit [...params.values()] oder Array.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. mit Number().
  • 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 mit Array.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.