⊗jsSpHPUSP 222 of 294 menu

Εργασία με το 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 σε μια νέα τιμή.

Ελληνικά
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Χρησιμοποιούμε cookie για τη λειτουργία του ιστότοπου, την ανάλυση και την εξατομίκευση. Η επεξεργασία των δεδομένων γίνεται σύμφωνα με την Πολιτική Απορρήτου.
αποδοχή όλων ρύθμιση απόρριψη