Рад са URLSearchParams у JavaScript-у

Као што већ знате, при раду са формама и GET захтевима у JavaScript-у настају стрингови овог вида:

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

Понекад је потребно програмски променити вредност неког параметра из овог стринга. Писање кода који то ради није баш погодно. Зато у JavaScript-у постоји посебна класа URLSearchParams за рад са таквим стринговима.

Хајде да креирамо објекат ове класе, проследивши параметром наш стринг са параметрима:

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

Хајде да погледамо које методе има креирани објекат.

Добијање вредности параметра

Помоћу методе get можемо добити вредност параметра:

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

Пробајмо да добијемо вредност непостојећег параметра:

javascriptlet res = searchParams.get('x');
console.log(res); // исписаће null

Провера постојања параметра

Помоћу методе has можемо проверити постојање параметра. Проверимо постојећи параметар:

javascriptlet res = searchParams.has('a');
console.log(res); // исписаће true

Проверимо непостојећи:

javascriptlet res = searchParams.has('x');
console.log(res); // исписаће false

Претварање у стринг

Помоћу методе toString можемо претворити наш објекат назад у стринг:

javascriptlet res = searchParams.toString();
console.log(res); // исписаће 'a=1&b=2&c=3'

Мењање параметара

Помоћу методе set можемо променити вредност параметра:

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

Проверимо измене:

javascriptlet res = searchParams.toString();
console.log(res); // исписаће 'a=1&b=x&c=3'

Додавање параметара

Помоћу методе set можемо такође додати нови параметар:

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

Проверимо измене:

javascriptlet res = searchParams.toString();
console.log(res); // исписаће 'a=1&b=2&c=3&d=4'

Додавање параметара

Помоћу методе append можемо такође додати нови параметар:

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

Проверимо измене:

javascriptlet res = searchParams.toString();
console.log(res); // исписаће 'a=1&b=2&c=3&d=4'

Хајде да пробамо да додамо већ постојећи параметар:

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

У овом случају наш метод ће једноставно додати истоимени параметар на крај:

javascriptlet res = searchParams.toString();
console.log(res); // исписаће 'a=1&b=2&c=3&a=4'

У томе се огледа разлика између метода set и append. Први ће променити постојећи параметар, а други ће само додати његов дупликат на крај.

Брисање параметара

Помоћу методе delete можемо брисати параметре:

javascriptsearchParams.delete('b');

Проверимо измене:

javascriptlet res = searchParams.toString();
console.log(res); // исписаће 'a=1&c=3'

Прелазак кроз параметре петљом

Параметре можемо прелазити петљом:

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

Више истих параметара

Нека у нашем стрингу има више истих параметара:

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

Помоћу методе getAll можемо добити низ вредности ових параметара:

javascriptlet res = searchParams.getAll('a');
console.dir(res); // исписаће [1, 2]

Практични задаци

Нека је дат следећи стринг са параметрима:

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

Додајте у овај стринг још један параметар test3.

Задание 2

Обришите из овог стринга параметар test2.

Задание 3

Промените параметар test1 на нову вредност.