Signatur
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
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
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?'));
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
// Wichtig · Fallstricke
- Einträge statt eindeutiger Schlüssel:
sizezählt mehrfach vorkommende Schlüssel jedes Mal mit. Für eindeutige Schlüsselnew Set(params.keys()).sizeverwenden. - Schreibgeschützt:
params.size = 0hat keine Wirkung (im Strict Mode gibt es einenTypeError). Zum Leeren alle Schlüssel mitdelete()entfernen oder ein neues Objekt anlegen. - Leere Werte zählen mit:
?a=&bergibtsize === 2, obwohl die Werte leer sind. - Kompatibilität:
sizegibt es erst seit 2023 (Chrome/Edge 113, Firefox 112, Safari 17, Node.js 19.8 und 18.16). In älteren Umgebungen ist der Wertundefined, deshalb ergibtparams.size > 0dort stillfalse. Als Rückfallweg eignet sich[...params].length.