Start · Sprachen · JavaScript · Referenz · URLSearchParams.size

URLSearchParams.size

Eigenschaft

Die schreibgeschützte Eigenschaft <code>size</code> gibt die Gesamtzahl aller Such-Parameter-Einträge eines <code>URLSearchParams</code>-Objekts zurück, doppelte Schlüssel eingeschlossen.

seit JavaScript Baseline 2023: Chrome 113, Firefox 112, Safari 17, Kategorie: webapi

Signatur

get URLSearchParams.prototype.size

Beschreibung

Die Eigenschaft URLSearchParams.size liefert die Anzahl der Schlüssel-Wert-Paare in einem URLSearchParams-Objekt. Früher musste man dafür umständlich [...params].length oder eine Schleife über entries() schreiben. size ist kürzer und macht klar, was gemeint ist.

Wichtig: Gezählt werden Einträge, nicht eindeutige Schlüssel. Kommt ein Schlüssel mehrfach vor (z. B. ?tag=a&tag=b), zählt jedes Vorkommen einzeln. Für die Zahl der eindeutigen Schlüssel braucht man new Set(params.keys()).size.

Typische Einsatzfälle: prüfen, ob eine URL überhaupt Query-Parameter hat (params.size === 0), aktive Filter in einer Suchoberfläche zählen oder vor dem Anhängen von ? an eine URL entscheiden, ob es überhaupt Parameter gibt. Weil size nur einen Getter hat, lässt sich der Wert nicht zuweisen. Er ändert sich von selbst durch append(), delete(), set() oder wenn man url.search ändert.

Rückgabewert

Typ
number
Beschreibung
Eine nicht-negative Ganzzahl: die Anzahl aller Schlüssel-Wert-Einträge, doppelte Schlüssel eingeschlossen.

Beispiele

Anzahl der Parameter ermitteln

const params = new URLSearchParams('?q=javascript&page=2&sort=asc');
console.log(params.size);

// Doppelte Schlüssel zählen einzeln
const tags = new URLSearchParams('tag=js&tag=web&tag=api');
console.log(tags.size);
console.log(new Set(tags.keys()).size); // eindeutige Schlüssel
3 3 1

Prüfen, ob eine URL Query-Parameter hat

const hasQuery = (href) => new URL(href).searchParams.size > 0;

console.log(hasQuery('https://example.com/suche?q=test'));
console.log(hasQuery('https://example.com/suche'));
console.log(hasQuery('https://example.com/suche?'));
true false false

Aktive Filter zählen und URL sauber aufbauen

const filters = { kategorie: 'buecher', preisMax: '', autor: 'Goethe' };

const params = new URLSearchParams();
for (const [key, value] of Object.entries(filters)) {
  if (value) params.append(key, value);
}

console.log(`${params.size} Filter aktiv`);

const url = params.size > 0 ? `/produkte?${params}` : '/produkte';
console.log(url);

params.delete('autor');
console.log(params.size); // size aktualisiert sich automatisch
2 Filter aktiv /produkte?kategorie=buecher&autor=Goethe 1

// Wichtig · Fallstricke

  • Einträge statt eindeutiger Schlüssel: size zählt mehrfach vorkommende Schlüssel jedes Mal mit. Für eindeutige Schlüssel new Set(params.keys()).size verwenden.
  • Schreibgeschützt: params.size = 0 hat keine Wirkung (im Strict Mode gibt es einen TypeError). Zum Leeren alle Schlüssel mit delete() entfernen oder ein neues Objekt anlegen.
  • Leere Werte zählen mit: ?a=&b ergibt size === 2, obwohl die Werte leer sind.
  • Kompatibilität: size gibt es erst seit 2023 (Chrome/Edge 113, Firefox 112, Safari 17, Node.js 19.8 und 18.16). In älteren Umgebungen ist der Wert undefined, deshalb ergibt params.size > 0 dort still false. Als Rückfallweg eignet sich [...params].length.