Работа с 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 на нова стойност.