Práca s URLSearchParams v JavaScripte
Ako už viete, pri práci s formulármi a GET požiadavkami v JavaScripte vznikajú reťazce takého tvaru:
let paramsString = 'a=1&b=2&c=3';
Niekedy je potrebné programovo zmeniť
hodnotu nejakého parametra z tohto reťazca.
Písanie kódu, ktorý to robí, nie je veľmi
pohodlné. Preto je v JavaScripte vstavaná špeciálna
trieda URLSearchParams na prácu s
takýmito reťazcami.
Vytvorme objekt tejto triedy, odovzdaním našehoreťazca s parametrami ako parameter:
let paramsString = 'a=1&b=2&c=3';
let searchParams = new URLSearchParams(paramsString);
Pozrime sa, aké metódy má vytvorený objekt.
Získanie hodnoty parametra
Pomocou metódy get je možné získať
hodnotu parametra:
let res = searchParams.get('a');
console.log(res);
Skúsme získať hodnotu neexistujúceho parametra:
let res = searchParams.get('x');
console.log(res); // vypíše null
Kontrola existencie parametra
Pomocou metódy has je možné skontrolovať
existenciu parametra. Skontrolujme existujúci parameter:
let res = searchParams.has('a');
console.log(res); // vypíše true
Skontrolujme neexistujúci:
let res = searchParams.has('x');
console.log(res); // vypíše false
Konverzia na reťazec
Pomocou metódy toString je možné previesť
náš objekt späť na reťazec:
let res = searchParams.toString();
console.log(res); // vypíše 'a=1&b=2&c=3'
Zmena parametrov
Pomocou metódy set je možné zmeniť
hodnotu parametra:
searchParams.set('b', 'x');
Skontrolujme zmeny:
let res = searchParams.toString();
console.log(res); // vypíše 'a=1&b=x&c=3'
Pridanie parametrov
Pomocou metódy set je možné tiež pridať
nový parameter:
searchParams.set('d', '4');
Skontrolujme zmeny:
let res = searchParams.toString();
console.log(res); // vypíše 'a=1&b=2&c=3&d=4'
Pridanie parametrov
Pomocou metódy append je možné tiež
pridať nový parameter:
searchParams.append('d', '4');
Skontrolujme zmeny:
let res = searchParams.toString();
console.log(res); // vypíše 'a=1&b=2&c=3&d=4'
Skúsme pridať už existujúci parameter:
searchParams.append('a', '4');
V tomto prípade naša metóda jednoducho pridá parameter s rovnakým menom na koniec:
let res = searchParams.toString();
console.log(res); // vypíše 'a=1&b=2&c=3&a=4'
V tomto sa prejavuje rozdiel medzi metódami
set a append. Prvá zmení
existujúci parameter, zatiaľ čo druhá jednoducho pridá
jeho duplikát na koniec.
Odstránenie parametrov
Pomocou metódy delete je možné odstraňovať
parametre:
searchParams.delete('b');
Skontrolujme zmeny:
let res = searchParams.toString();
console.log(res); // vypíše 'a=1&c=3'
Prechádzanie parametrov cyklom
Parametre je možné prechádzať cyklom:
for (let p of searchParams) {
console.log(p);
}
Niekoľko rovnakých parametrov
Nech v našom reťazci je niekoľko rovnakých parametrov:
let paramsString = 'a=1&a=2b=2&c=3';
Pomocou metódy getAll je možné získať
pole hodnôt týchto parametrov:
let res = searchParams.getAll('a');
console.dir(res); // vypíše [1, 2]
Praktické úlohy
Nech je daný nasledujúci reťazec s parametrami:
let paramsString = 'test1=param1&test2=param2&test3=param3';
Pridajte do tohto reťazca ešte jeden parameter test3.
Odstráňte z tohto reťazca parameter test2.
Zmeňte parameter test1 na novú hodnotu.