Коркард бо 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-ро ба қимати нав тағйир диҳед.