Darbība ar URLSearchParams JavaScript

Kā jūs jau zināt, strādājot ar formām un GET pieprasījumiem JavaScript, rodas šāda veida virknes:

javascriptlet paramsString = 'a=1&b=2&c=3';

Dažreiz ir nepieciešams programmatiski mainīt kāda parametra vērtību no šīs virknes. Rakstīt kodu, kas to dara, nav īpaši ērti. Tāpēc JavaScript ir iebūvēta īpaša klase URLSearchParams darbam ar šādām virknēm.

Izveidosim šīs klases objektu, padodot parametrā mūsu virkni ar parametriem:

javascriptlet paramsString = 'a=1&b=2&c=3';
let searchParams = new URLSearchParams(paramsString);

Apskatīsim, kādas metodes ir izveidotajam objektam.

Parametra vērtības iegūšana

Izmantojot metodi get, var iegūt parametra vērtību:

javascriptlet res = searchParams.get('a');
console.log(res);

Mēģināsim iegūt neesoša parametra vērtību:

javascriptlet res = searchParams.get('x');
console.log(res); // izvadīs null

Parametra esamības pārbaude

Izmantojot metodi has, var pārbaudīt parametra esamību. Pārbaudīsim esošu parametru:

javascriptlet res = searchParams.has('a');
console.log(res); // izvadīs true

Pārbaudīsim neesošu:

javascriptlet res = searchParams.has('x');
console.log(res); // izvadīs false

Pārveidošana virknē

Izmantojot metodi toString, var pārveidot mūsu objektu atpakaļ virknē:

javascriptlet res = searchParams.toString();
console.log(res); // izvadīs 'a=1&b=2&c=3'

Parametru maiņa

Izmantojot metodi set, var mainīt parametra vērtību:

javascriptsearchParams.set('b', 'x');

Pārbaudīsim izmaiņas:

javascriptlet res = searchParams.toString();
console.log(res); // izvadīs 'a=1&b=x&c=3'

Parametru pievienošana

Izmantojot metodi set, var arī pievienot jaunu parametru:

javascriptsearchParams.set('d', '4');

Pārbaudīsim izmaiņas:

javascriptlet res = searchParams.toString();
console.log(res); // izvadīs 'a=1&b=2&c=3&d=4'

Parametru pievienošana

Izmantojot metodi append, var arī pievienot jaunu parametru:

javascriptsearchParams.append('d', '4');

Pārbaudīsim izmaiņas:

javascriptlet res = searchParams.toString();
console.log(res); // izvadīs 'a=1&b=2&c=3&d=4'

Mēģināsim pievienot jau esošu parametru:

javascriptsearchParams.append('a', '4');

Šajā gadījumā mūsu metode vienkārši pievienos tāda paša nosaukuma parametru beigās:

javascriptlet res = searchParams.toString();
console.log(res); // izvadīs 'a=1&b=2&c=3&a=4'

Tā izpaužas atšķirība starp metodēm set un append. Pirmais mainīs esošo parametru, bet otrais vienkārši pievienos tā dublikātu beigās.

Parametru dzēšana

Izmantojot metodi delete, var dzēst parametrus:

javascriptsearchParams.delete('b');

Pārbaudīsim izmaiņas:

javascriptlet res = searchParams.toString();
console.log(res); // izvadīs 'a=1&c=3'

Parametru atkārtošana ar ciklu

Parametrus var atkārtot ar ciklu:

javascriptfor (let p of searchParams) {
  console.log(p);
}

Vairāki identiski parametri

Pieņemsim, ka mūsu virknē ir vairāki identiski parametri:

javascriptlet paramsString = 'a=1&a=2b=2&c=3';

Izmantojot metodi getAll, var iegūt šo parametru vērtību masīvu:

javascriptlet res = searchParams.getAll('a');
console.dir(res); // izvadīs [1, 2]

Praktiskie uzdevumi

Pieņemsim, ka ir dota šāda virkne ar parametriem:

javascriptlet paramsString = 'test1=param1&test2=param2&test3=param3';
Задание 1

Pievienojiet šai virknei vēl vienu parametru test3.

Задание 2

Izdzēsiet no šīs virknes parametru test2.

Задание 3

Mainiet parametru test1 uz jaunu vērtību.