Работа з URLSearchParams у JavaScript
Як вы ўжо ведаеце, пры работе з формамі і GET запытамі ў JavaScript узнікаюць радкі такіх выгляду:
let paramsString = 'a=1&b=2&c=3';
Часам трэба праграмным чынам змяніць
значэнне якого-небудзь параметра з гэтага радка.
Пісаць код, які робіць гэта, не вельмі
зручна. Таму ў JavaScript убудаваны спецыяльны
клас URLSearchParams для работы з
такімі радкамі.
Давайце створым аб'ект гэтага класа, перадаўшы параметрам наш радок з параметрамі:
let paramsString = 'a=1&b=2&c=3';
let searchParams = new URLSearchParams(paramsString);
Давайце паглядзім, якія метады ёсць у створанага аб'екта.
Атрыманне значэння параметра
З дапамогай метаду get можна атрымаць
значэнне параметра:
let res = searchParams.get('a');
console.log(res);
Паспрабуем атрымаць значэнне неіснуючага параметра:
let res = searchParams.get('x');
console.log(res); // выведзе null
Праверка наяўнасці параметра
З дапамогай метаду has можна праверыць
наяўнасць параметра. Праверым існуючы параметр:
let res = searchParams.has('a');
console.log(res); // выведзе true
Праверым неіснуючы:
let res = searchParams.has('x');
console.log(res); // выведзе false
Пераўтварэнне ў радок
З дапамогай метаду toString можна пераўтварыць
наш аб'ект назад у радок:
let res = searchParams.toString();
console.log(res); // выведзе 'a=1&b=2&c=3'
Змяненне параметраў
З дапамогай метаду set можна змяніць
значэнне параметра:
searchParams.set('b', 'x');
Праверым змены:
let res = searchParams.toString();
console.log(res); // выведзе 'a=1&b=x&c=3'
Даданне параметраў
З дапамогай метаду set можна таксама дадаць
новы параметр:
searchParams.set('d', '4');
Праверым змены:
let res = searchParams.toString();
console.log(res); // выведзе 'a=1&b=2&c=3&d=4'
Даданне параметраў
З дапамогай метаду append можна таксама
дадаць новы параметр:
searchParams.append('d', '4');
Праверым змены:
let res = searchParams.toString();
console.log(res); // выведзе 'a=1&b=2&c=3&d=4'
Давайце паспрабуем дадаць ужо існуючы параметр:
searchParams.append('a', '4');
У гэтым выпадку наш метад проста дадасць аднайменны параметр у канец:
let res = searchParams.toString();
console.log(res); // выведзе 'a=1&b=2&c=3&a=4'
У гэтым праяўляецца розніца паміж метадамі
set і append. Першы зменіць
існуючы параметр, а другі проста дадасць
яго дубль у канец.
Выдаленне параметраў
З дапамогай метаду delete можна выдаляць
параметры:
searchParams.delete('b');
Праверым змены:
let res = searchParams.toString();
console.log(res); // выведзе 'a=1&c=3'
Перабор параметраў цыклам
Параметры можна перабіраць цыклам:
for (let p of searchParams) {
console.log(p);
}
Некалькі аднолькавых параметраў
Хай у нашым радку некалькі аднолькавых параметраў:
let paramsString = 'a=1&a=2b=2&c=3';
З дапамогай метаду getAll можна атрымаць
масіў значэнняў гэтых параметраў:
let res = searchParams.getAll('a');
console.dir(res); // выведзе [1, 2]
Практычныя задачы
Хай дана наступная радок з параметрамі:
let paramsString = 'test1=param1&test2=param2&test3=param3';
Дадайце ў гэты радок яшчэ адзін параметр test3.
Выдаліце з гэтага радка параметр test2.
Змяніце параметр test1 на новае значэнне.