Πίνακες σε JavaScript. Πολυδιάστατοι πίνακες σε javascript και διάφοροι τρόποι ταξινόμησης τους Πολυδιάστατοι πίνακες σε παραδείγματα javascript

Στο προηγούμενο άρθρο, μιλήσαμε για το τι είναι και πώς να το δουλέψετε. Σε αυτό το άρθρο θα μιλήσουμε για πολυδιάστατος πίνακας.

Είναι ένας πίνακας που έχει ένα ή περισσότερα στοιχεία, τα οποία είναι επίσης πίνακες. Ανάλογα με το βάθος της διαφήμισης, συγκεκριμένα, μπορεί να κληθεί δισδιάστατος πίνακας(2 επίπεδα) είτε τρισδιάστατος πίνακας(3 επίπεδα) είτε τετραδιάστατη(4 επίπεδα) και ούτω καθεξής.

Ο πιο δημοφιλής, μετά τον μονοδιάστατο πίνακα, ο πιο συχνά χρησιμοποιούμενος είναι ο δισδιάστατος πίνακας. Θα το μελετήσουμε πιο αναλυτικά.


Όπως μπορείτε να δείτε, τα στοιχεία ενός δισδιάστατου πίνακα είναι μονοδιάστατοι πίνακες. Εάν αυτοί οι μονοδιάστατοι πίνακες περιείχαν περισσότερους πίνακες, τότε ο πίνακας arr θα ήταν ήδη τρισδιάστατος.

Για παράδειγμα, ας δημιουργήσουμε τρεις απλούς πίνακες και ας τους γεμίσουμε με δεδομένα. Θα συμπληρώσουμε τον πρώτο με ζυγούς αριθμούς, τον δεύτερο με περιττούς αριθμούς και τον τρίτο με κάποια αυθαίρετα δεδομένα.

// Δηλώστε τρεις κενούς πίνακες var evenNumbers = new Array (); // Μεταβλητή k - για δείκτες πίνακα evenNumbers var k = 0; var oddNumbers = νέος πίνακας (); // Μεταβλητή n - για δείκτες πίνακα oddNumbers var n = 0; var data = new Array ("car", "plane", true, 89, "m"); // Συμπληρώστε τον πίνακα evenNumbers, με ζυγούς αριθμούς για (var i = 1; i

Για να δείτε τι υπάρχει μέσα στον πίνακα, μπορείτε να χρησιμοποιήσετε ένα τέτοιο εργαλείο όπως κονσόλα.

Για παράδειγμα, θέλουμε να δούμε τα περιεχόμενα ενός πίνακα με περιττούς αριθμούς oddNumbers. Για να το κάνετε αυτό, γράψτε την ακόλουθη γραμμή στον παρακάτω κώδικα:

Console.log (oddNumbers);

Για να δείτε το αποτέλεσμα, πρέπει να ανοίξετε κονσόλα στο πρόγραμμα περιήγησης... Στο Google Chrome, αυτό γίνεται ως εξής: κάντε δεξί κλικ στη σελίδα και από το μενού περιβάλλοντος, επιλέξτε την τελευταία επιλογή "Προβολή κώδικα", δηλαδή τον επιθεωρητή. Στην αγγλική έκδοση, αυτή η επιλογή ονομάζεται Inspect.


Και κάτω θα εμφανιστεί η γραμμή εργαλείων προγραμματιστή. Σε αυτό, πρέπει να μεταβείτε στην καρτέλα Κονσόλα.


Τώρα για να δημιουργήστε έναν δισδιάστατο πίνακα, πρέπει να το δηλώσετε και να προσθέσετε σε αυτό τους μονοδιάστατους πίνακες που δημιουργήσατε παραπάνω.

// Δηλώστε έναν δισδιάστατο πίνακα twoDimens και συμπληρώστε τον var twoDimens = νέος πίνακας (ζυγοί αριθμοί, περιττοί αριθμοί, δεδομένα); console.log (twoDimens);

Ας δούμε τα περιεχόμενα αυτού του πίνακα στην κονσόλα.


επανάληψη σε έναν δισδιάστατο πίνακα

Πρώτα, ας μάθουμε πώς να αποκτήσετε πρόσβαση στα στοιχεία ενός δισδιάστατου πίνακα.

Όπως και με μεμονωμένους πίνακες, τα στοιχεία προσεγγίζονται από τους δείκτες τους.

Για παράδειγμα, ας εμφανίσουμε το στοιχείο στο δείκτη 3 από έναν πίνακα με περιττούς αριθμούς (μονοί αριθμοί). Ο δείκτης του μονοδιάστατου πίνακα oddNumbers στον δισδιάστατο πίνακα twoDimens είναι ένα (1).

Document.write ("Το στοιχείο με δείκτη 3 από τον πίνακα περιττών αριθμών oddNumbers είναι:" + twoDimens); // Στοιχείο: 7

Στον πίνακα twoDimens, αναφερόμαστε στο στοιχείο στο ευρετήριο 1. Το στοιχείο σε αυτό το ευρετήριο είναι ο πίνακας oddNumbers. Και σε αυτόν τον πίνακα, έχουμε ήδη πρόσβαση στο στοιχείο με δείκτη 3, που είναι ο αριθμός 7.

Τώρα ας πάμε στο ίδιο το ερώτημα πώς να κάνετε βρόχο πάνω από έναν δισδιάστατο πίνακα.

Ο βρόχος πάνω από έναν δισδιάστατο πίνακα γίνεται χρησιμοποιώντας έναν διπλό βρόχο. Για παράδειγμα, ας επαναλάβουμε τον πίνακα twoDimens.

Για (var i = 0; i< twoDimens.length; i++){ for(var j = 0; j < twoDimens[i].length; j++){ document.write("

Στοιχείο με ευρετήριο "+ i +" "+ j +"είναι ίσο με: "+ twoDimens [i] [j] +"

"); } }

Στον πρώτο βρόχο, επαναλαμβάνουμε τον ίδιο τον πίνακα twoDimens. Στον δεύτερο βρόχο, επαναλαμβάνουμε ήδη το ίδιο το στοιχείο (πίνακας). Πρώτον, η μεταβλητή i είναι ίση με 0. Επομένως, στον δεύτερο βρόχο, επαναλαμβάνουμε πρώτα τον πρώτο πίνακα evenNumbers, ο οποίος έχει δείκτη 0. Και ήδη μέσα στον δεύτερο βρόχο, έχουμε πρόσβαση στα στοιχεία αυτού του πίνακα. Έτσι: δύοΔιαστάσεις [j]. Όπου j κυμαίνεται από 0 έως το μήκος του πίνακα ζυγών αριθμών.

Αφού επαναλάβουμε τα στοιχεία από τον πρώτο πίνακα, επιστρέφουμε στον πρώτο βρόχο, αυξάνουμε τη μεταβλητή i και προχωράμε στην επανάληψη στον δεύτερο πίνακα oddNumbers, ο οποίος έχει δείκτη 1. Και έτσι επαναλαμβάνουμε κάθε στοιχείο του δισδιάστατου πίνακα δύο διαστάσεων.

Ας δούμε τώρα το αποτέλεσμα αυτής της αναζήτησης:


Αυτό ήταν το μόνο για το οποίο ήθελα να μιλήσω σε αυτό το άρθρο. Τώρα ξέρετε πώς να δημιουργήσετε έναν δισδιάστατο πίνακα, πώς να αποκτήσετε πρόσβαση στα στοιχεία ενός δισδιάστατου πίνακα και πώς να επαναλάβετε έναν δισδιάστατο πίνακα. Ελπίζω ότι όλα ήταν ξεκάθαρα. Εύχομαι καλή επιτυχία!

Σε αυτό το άρθρο, θα ρίξουμε μια ματιά στους τυπικούς πίνακες με αριθμητική ευρετηρίαση JavaScript. Οι πίνακες δηλώνονται χρησιμοποιώντας αγκύλες:

var fruits = ["Μήλο", "Πορτοκάλι", "Γάιδαρος"]

Για να εξαγάγετε ένα στοιχείο, τοποθετήστε τον δείκτη του σε αγκύλες. Πρώτος δείκτης 0:

var fruits = ["Μήλο", "Πορτοκάλι", "Γάιδαρος"] alert (φρούτα) alert (φρούτα) alert (φρούτα)

Μπορούμε επίσης να λάβουμε το μήκος ενός πίνακα JavaScript:

var fruits = ["Apple", "Orange", "Donkey"] ειδοποίηση (fruits.length)

Ωχ! Δημιουργήσαμε μια συστοιχία με δύο φρούτα και έναν γάιδαρο. Τώρα πρέπει να αφαιρέσουμε τον γάιδαρο.

Οι μέθοδοι pop and push

Η μέθοδος pop στο JavaScript αφαιρεί ένα στοιχείο από έναν πίνακα και το επιστρέφει.

Το ακόλουθο παράδειγμα δείχνει πώς το Donkey ανακτάται από έναν πίνακα:

var fruits = ["Apple", "Orange", "Donkey"] alert ("I'm deleting" + fruits.pop ()) // Τώρα έχουμε μόνο ειδοποίηση ["Apple", "Orange"] ("Τώρα το μέγεθος του πίνακα : "+ φρούτα.μήκος) // ο γάιδαρος αφαιρέθηκε

Σημειώστε ότι το pop τροποποιεί τον ίδιο τον πίνακα.

Το ανάλογο του pop είναι η μέθοδος push, η οποία προσθέτει ένα αντικείμενο σε έναν πίνακα. Για παράδειγμα, ξεχάσαμε να προσθέσουμε ένα ροδάκινο:

var fruits = ["Μήλο", "Πορτοκάλι"] fruits.push ("Ροδάκινο"); // τώρα έχουμε ειδοποίηση ["Apple", "Orange", "Peach"] ("Τελευταίο στοιχείο:" + φρούτα)

  1. Δημιουργήστε έναν πίνακα στυλ με στοιχεία " Τζαζ”, “Ακεφιά”;
  2. Προσθέστε την τιμή " Ροκ'ν'ρολ«;
  3. Αντικαταστήστε τη δεύτερη τιμή από το τέλος με " Κλασσικός". Θα πρέπει να καταλήξετε με έναν πίνακα: Τζαζ”, ”Κλασσικός”, ”Ροκ'ν'ρολ". Ο κώδικας πρέπει να λειτουργεί για οποιοδήποτε μήκος του πίνακα.
  4. Εξάγετε την τελευταία τιμή από τον πίνακα και ειδοποιήστε τον.

Λύση

// 1 var styles = ["Jazz", "Bluez"] // 2 styles.push ("Rock" n "Roll") // or: styles = "Rock" n "Roll" // 3 styles = "Classic "// 4 ειδοποίηση (styles.pop ())

Μετατόπιση / κατάργηση μετατόπισης μεθόδων

Οι μέθοδοι shift / unshift λειτουργούν στο τέλος ενός πίνακα, αλλά μπορείτε επίσης να χρησιμοποιήσετε το shift για να μετακινήσετε στοιχεία προς τα επάνω ( η πρώτη τιμή του πίνακα αφαιρείται με μια μετατόπιση των στοιχείων). Η μέθοδος unshift επιτρέπει στην JavaScript να προσθέσει ένα στοιχείο σε έναν πίνακα από το τέλος:

var fruits = ["Apple", "Orange"] var apple = fruits.shift () // τώρα έχουμε μόνο ["Orange"] fruits.unshift ("Lemon") // τώρα έχουμε ["Lemon", " Πορτοκαλί"] ειδοποίηση (φρούτα.μήκος) // 2

Τόσο το shift όσο και το unshift μπορούν να λειτουργήσουν σε πολλά στοιχεία ταυτόχρονα:

var fruits = ["Apple"] fruits.push ("Orange", "Peach") fruits.unshift ("Pineapple", "Lemon") // τώρα ο πίνακας μοιάζει με αυτό: ["Aneapple", "Lemon", "Μήλο", Πορτοκάλι "," Ροδάκινο "]

Εργασία αυτοδιδακτικής

Γράψτε τον κώδικα για να εμφανίσετε μια τυχαία τιμή από τον πίνακα arr μέσω ειδοποίησης:

var arr = ["Plum", "Orange", "Donkey", "Carrot", "JavaScript"]

Σημείωση: Ο κωδικός για τη λήψη ενός τυχαίου αριθμού από την ελάχιστη στη μέγιστη τιμή (συμπεριλαμβανομένου) είναι ο εξής:

var rand = min + Math.floor (Math.random () * (max + 1-min))

Λύση

Πρέπει να εξαγάγουμε έναν τυχαίο αριθμό μεταξύ 0 και arr.length-1 (συμπεριλαμβανομένου):

var arr = ["Plum", "Orange", "Donkey", "Carrot", "JavaScript"] var rand = Math.floor (Math.random () * arr.length) alert (arr)

Επανάληψη σε έναν πίνακα

Στο JavaScript, η επανάληψη σε έναν πίνακα γίνεται χρησιμοποιώντας έναν βρόχο for:

var fruits = ["Ανανάς", "Λεμόνι", "Μήλο", "Πορτοκάλι", "Ροδάκινο"] για (var i = 0; i

Εργασία αυτοδιδακτικής

Δημιουργήστε μια συνάρτηση εύρεσης (arr, τιμή) που βρίσκει μια τιμή σε έναν δεδομένο πίνακα και επιστρέφει το ευρετήριό του ή -1 εάν δεν βρέθηκε τιμή.

Για παράδειγμα:

arr = ["test", 2, 1.5, false] find (arr, "test") // 0 find (arr, 2) // 1 find (arr, 1.5) // 2 find (arr, 0) // -1

Λύση

Μια πιθανή λύση μπορεί να μοιάζει με αυτό:

εύρεση συνάρτησης (πίνακας, τιμή) (για (var i = 0; i

Αλλά αυτό δεν είναι αλήθεια, γιατί το == δεν λέει τη διαφορά μεταξύ 0 και ψευδούς.

Είναι πιο σωστό να χρησιμοποιείτε === όταν εργάζεστε με πίνακες σε JavaScript. Επιπλέον, το πιο πρόσφατο πρότυπο ES5 περιέχει τη συνάρτηση Array # indexOf. Με τη βοήθειά του, μπορούμε να ορίσουμε μια συνάρτηση ως εξής:

συνάρτηση find (πίνακας, τιμή) (if (array.indexOf) επιστρέφει array.indexOf (τιμή) για (var i = 0; i

Θα ήταν ακόμη πιο έξυπνο να ορίσουμε την εύρεση μέσω μιας συνθήκης για να ελέγξουμε αν υπάρχει η μέθοδος indexOf.

Εργασία αυτοδιδακτικής

Δημιουργήστε μια συνάρτηση filterNumeric (arr) που παίρνει έναν πίνακα και επιστρέφει έναν νέο πίνακα που περιέχει μόνο τις αριθμητικές τιμές από το arr.

Ένα παράδειγμα για το πώς πρέπει να λειτουργεί:

arr = ["a", 1, "b", 2]; arr = filterNumeric (arr); // τώρα arr =

Λύση

Η λύση είναι να κάνετε loop πάνω από τον πίνακα και να προσθέσετε τιμές στον νέο πίνακα εάν είναι αριθμητικές.

ενώνονται και χωρίζονται

Μερικές φορές χρειάζεστε έναν γρήγορο τρόπο για να μετατρέψετε έναν πίνακα JavaScript σε συμβολοσειρά. Αυτός είναι ο σκοπός της μεθόδου ένωσης.

Συνενώνει τον πίνακα σε μια συμβολοσειρά χρησιμοποιώντας τον καθορισμένο οριοθέτη:

var fruits = ["Λεμόνι", "Μήλο", "Πορτοκάλι", "Ροδάκινο"]; var str = fruits.join (","); ειδοποίηση (str);

Η αντίστροφη μετατροπή γίνεται εύκολα με τη μέθοδο split:

var fruits = "Μήλο, Πορτοκάλι, Ροδάκινο"; var arr = fruits.split (","); // Το arr περιέχει τώρα ειδοποίηση ["Apple", "Orange", "Peach"] (arr);

Εργασία αυτοδιδακτικής

Το αντικείμενο περιλαμβάνει μια ιδιότητα className που περιέχει τα ονόματα κλάσεων, διαχωρισμένα με κενά:

Γράψτε μια συνάρτηση addClass (obj, cls) που προσθέτει την κλάση cls, αλλά μόνο εάν δεν υπάρχει:

ddClass (obj, "new") // obj.className = "άνοιγμα μενού νέο" addClass (obj, "open") // καμία αλλαγή (η κλάση υπάρχει ήδη) addClass (obj, "me") // obj.className = ειδοποίηση "open menu new me" (obj.className) //

Λύση

Πρέπει να χωρίσετε το className και τον βρόχο σε μέρη. Εάν η κλάση δεν βρεθεί τότε προστίθεται.

Ο βρόχος είναι ελαφρώς βελτιστοποιημένος για αύξηση της απόδοσης:

συνάρτηση addClass (elem, cls) (for (var c = elem.className.split (""), i = c.length-1; i> = 0; i--) (if (c [i] == cls ) return) elem.className + = "" + cls) var obj = (className: "open menu") addClass (obj, "new") addClass (obj, "open") alert (obj.className) // άνοιγμα μενού νέος

Στο παραπάνω παράδειγμα, η μεταβλητή c ορίζεται στην αρχή του βρόχου και ο τελευταίος δείκτης της ορίζεται σε i.

Ο ίδιος ο βρόχος επεξεργάζεται προς την αντίθετη κατεύθυνση, τελειώνοντας με τη συνθήκη i> = 0. Επειδή το i> = 0 είναι πιο γρήγορο στον έλεγχο από το i. Το οποίο στο JavaScript κάνει την αναζήτηση σε έναν πίνακα πιο γρήγορη.

Χρήση μήκους για την περικοπή ενός πίνακα

Χρησιμοποιώντας την ιδιότητα μήκος, μπορείτε να περικόψετε έναν πίνακα ως εξής:

Δίνετε το μήκος και το πρόγραμμα περιήγησης περικόπτει τον πίνακα.

Ο πίνακας είναι ένα αντικείμενο, που σημαίνει

Στην πραγματικότητα, στο JavaScript, το Array είναι ένα αντικείμενο, πλήρες με αυτόματη ρύθμιση μήκους και ειδικές μεθόδους.

Αυτό διαφέρει από την έννοια σε άλλες γλώσσες, όπου οι πίνακες αντιπροσωπεύουν ένα συνεχόμενο τμήμα της μνήμης. Διαφέρει επίσης από μια συνδεδεμένη λίστα που βασίζεται σε ουρά ή στοίβα.

Μη αριθμητικά πλήκτρα πίνακα

Τα κλειδιά είναι αριθμοί, αλλά μπορούν να έχουν οποιοδήποτε όνομα:

arr = arr = 5 arr.prop = 10 // μην το κάνετε αυτό

Στο JavaScript, οι πίνακες είναι πίνακες κατακερματισμού με τα πλεονεκτήματα απόδοσης αλλά και τα μειονεκτήματά τους.

Για παράδειγμα, το push / pop λειτουργεί μόνο στα πιο εξωτερικά στοιχεία του πίνακα, επομένως είναι απίστευτα γρήγορα.

Το push λειτουργεί μόνο στο τέλος:

var arr = ["My", "array"] arr.push ("something") alert (arr) // string "array"

Οι μέθοδοι Shift / unshift είναι αργές επειδή πρέπει να επαναριθμήσουν ολόκληρο τον πίνακα. Η μέθοδος συναρμολόγησης μπορεί επίσης να προκαλέσει επαναρίθμηση:

Έτσι, το shift / unshift είναι πιο αργό από το push / pop. Όσο μεγαλύτερος είναι ο πίνακας, τόσο περισσότερος χρόνος χρειάζεται η JavaScript για να ταξινομήσει τον πίνακα.

Εργασία αυτοδιδακτικής

Ποιο θα είναι το αποτέλεσμα; Γιατί;

arr = ["a", "b"] arr.push (συνάρτηση () (ειδοποίηση (αυτό))) arr () //?

Λύση

Εφόσον οι πίνακες είναι αντικείμενα, arr ..είναι στην πραγματικότητα μια κλήση σε μια μέθοδο ενός αντικειμένου όπως το obj μέθοδος:

arr () // ίδιο με το arr () // συντακτικά λάθος, αλλά εννοιολογικά το ίδιο: arr.2 () // ξαναγράφεται με το ίδιο στυλ με το obj.method () this = arr σε αυτήν την περίπτωση περνά στη συνάρτηση, οπότε βγαίνουν τα περιεχόμενα του arr. arr = ["a", "b"] arr.push (συνάρτηση () (ειδοποίηση (αυτό))) arr () // "a", "b", συνάρτηση

Αραιοί πίνακες, περιγραφή μήκους

Η ιδιότητα length σάς επιτρέπει να λαμβάνετε όχι το μέγεθος του πίνακα στο JavaScript, αλλά το τελευταίο ευρετήριο + 1. Αυτό είναι σημαντικό όταν πρόκειται για αραιούς πίνακες, με «κενά» στους δείκτες.

Στο επόμενο παράδειγμα, θα προσθέσουμε δύο στοιχεία στα άδεια φρούτα, αλλά το μήκος παραμένει στο 100:

var fruits = // κενή σειρά φρούτων = "Ροδάκινο" φρούτα = ειδοποίηση "Apple" (fruits.length) // 100 (αλλά υπάρχουν μόνο 2 στοιχεία στον πίνακα)

Εάν προσπαθήσετε να εξάγετε έναν αραιό πίνακα, το πρόγραμμα περιήγησης θα εμφανίσει τους δείκτες που λείπουν ως κενά στοιχεία:

var φρούτα = // κενή σειρά φρούτων = "Ροδάκινο" φρούτα = "Μήλο" ειδοποίηση (φρούτα) //, Ροδάκινο, Μήλο (ή κάτι τέτοιο)

Όμως ένας πίνακας είναι ένα αντικείμενο με δύο κλειδιά. Οι τιμές που λείπουν δεν καταλαμβάνουν χώρο.

Οι αραιοί πίνακες συμπεριφέρονται περίεργα όταν εφαρμόζονται μέθοδοι πίνακα σε αυτούς. Δεν έχουν ιδέα ότι λείπουν οι δείκτες:

var fruits = φρούτα = "Peach" fruits = "Apple" alert (fruits.pop ()) // push "Apple" (στο δείκτη 9) alert (fruits.pop ()) // push out an unset (στο index 8 ) )

Προσπαθήστε να αποφύγετε τους αραιούς πίνακες. Τέλος πάντων, οι μέθοδοί τους δεν θα λειτουργήσουν καλά. Χρησιμοποιήστε το αντικείμενο.

Αφαίρεση από πίνακα

Όπως γνωρίζουμε, οι πίνακες είναι αντικείμενα, επομένως θα μπορούσαμε να χρησιμοποιήσουμε το delete για να διαγράψουμε την τιμή:

var arr = ["Go", "to", "home"] delete arr // now arr = ["Go", undefined, "home"] alert (arr) // not set

Μπορείτε να δείτε ότι η τιμή αφαιρείται, αλλά όχι με τον τρόπο που θα θέλαμε, επειδή ο πίνακας περιέχει ένα μη σύνολο.

Ο τελεστής διαγραφής διαγράφει ένα ζεύγος κλειδιού-τιμής και αυτό είναι όλο. Φυσικά, δεδομένου ότι ένας πίνακας είναι μόνο ένας κατακερματισμός, η θέση του αφαιρεθέντος στοιχείου γίνεται απροσδιόριστη.

Τις περισσότερες φορές χρειάζεται να αφαιρέσουμε ένα στοιχείο χωρίς να αφήνουμε «τρύπες» μεταξύ των δεικτών. Υπάρχει μια άλλη μέθοδος που θα μας βοηθήσει σε αυτό.

Μέθοδος συναρμογής

Η μέθοδος splice μπορεί να αφαιρέσει και να αντικαταστήσει στοιχεία σε πολυδιάστατους πίνακες JavaScript. Η σύνταξή του είναι:

arr.splice (ευρετήριο, deleteCount [, elem1, ..., elemN])

Διαγράφει το στοιχείο deleteCount ξεκινώντας από το ευρετήριο και στη συνέχεια εισάγει το elem1,…, το elemN στη θέση του.

Ας ρίξουμε μια ματιά σε μερικά παραδείγματα:

var arr = ["Go", "to", "home"] arr.splice (1, 1) // αφαίρεση 1 στοιχείου ξεκινώντας από την ειδοποίηση ευρετηρίου 1 (arr.join (",")) // ["Go " ," home "] (καταργήθηκε 1 στοιχείο)

Με αυτόν τον τρόπο μπορείτε να χρησιμοποιήσετε το splice για να αφαιρέσετε ένα στοιχείο από τον πίνακα. Οι αριθμοί των στοιχείων του πίνακα μετατοπίζονται για να καλυφθεί το κενό:

var arr = ["Go", "to", "home"] arr.splice (0, 1) // αφαίρεση 1 στοιχείου ξεκινώντας από το δείκτη 0 alert (arr) // "to" έγινε το πρώτο στοιχείο

Το ακόλουθο παράδειγμα δείχνει τον τρόπο αντικατάστασης στοιχείων:

Η μέθοδος συναρμογής επιστρέφει έναν πίνακα με τα στοιχεία που αφαιρέθηκαν:

var arr = ["Μετάβαση", "προς", "σπίτι", "τώρα"]; // αφαιρέστε τα πρώτα 2 στοιχεία var remove = arr.splice (0, 2) alert (αφαιρέθηκε) // "Go", "to"<-- массив удаленных элементов splice может вставлять элементы, задайте 0 для deleteCount. var arr = ["Go", "to", "home"]; // со второй позиции // удаляем 0 // и вставляем "my", "sweet" arr.splice(2, 0, "my", "sweet") alert(arr) // "Go", "to", "my", "sweet", "home"

Αυτή η μέθοδος μπορεί επίσης να χρησιμοποιήσει έναν αρνητικό δείκτη, ο οποίος μετράται από το τέλος του πίνακα:

var arr = // για το στοιχείο -1 (προτελευταίο) // αφαιρέστε 0 στοιχεία, // και εισάγετε 3 και 4 arr.splice (-1, 0, 3, 4) alert (arr) // 1,2,3, 4.5

Εργασία αυτοδιδακτικής

Το αντικείμενο περιέχει μια ιδιότητα className που περιέχει τα ονόματα κλάσεων, διαχωρισμένα με κενά:

var obj = (ClassName: "open menu")

Γράψτε μια συνάρτηση removeClass (obj, cls) που αφαιρεί την κλάση cls εάν δοθεί:

removeClass (obj, "open") // obj.className = "menu" removeClass (obj, "blabla") // καμία αλλαγή (δεν υπάρχει κλάση για κατάργηση)

Λύση

Πρέπει να χωρίσετε το className σε μέρη και να κάνετε βρόχο πάνω από αυτά τα μέρη. Εάν βρεθεί μια αντιστοίχιση, αφαιρείται από τη διάταξη αντικειμένων JavaScript και στη συνέχεια προστίθεται ξανά στο τέλος.

Ας το βελτιστοποιήσουμε λίγο:

συνάρτηση removeClass (elem, cls) (for (var c = elem.className.split (""), i = c.length-1; i> = 0; i--) (if (c [i] == cls ) c.splice (i, 1)) elem.className = c.join ("")) var obj = (className: "open menu") removeClass (obj, "open") removeClass (obj, "blabla") ειδοποίηση (obj.className) // μενού

Στο παραπάνω παράδειγμα, το c ορίζεται στην αρχή του βρόχου και το i ορίζεται στον τελευταίο του δείκτη.

Ο ίδιος ο βρόχος τρέχει προς την αντίθετη κατεύθυνση, τελειώνοντας με τη συνθήκη i> = 0. Αυτό συμβαίνει επειδή το i> = 0 ελέγχεται πιο γρήγορα από το i. Που επιταχύνει την αναζήτηση ακινήτου σε γ.

Μέθοδος τεμαχισμού

Μπορείτε να εξαγάγετε μέρος ενός πίνακα χρησιμοποιώντας τη μέθοδο slice (αρχή [, τέλος]): var arr = ["Why", "learn", "JavaScript"]; var arr2 = arr.slice (0,2) // παίρνει 2 στοιχεία ξεκινώντας από το 0 alert (arr2.join (,"")) // "Why, Learn"

Σημειώστε ότι αυτή η μέθοδος δεν αλλάζει τον αριθμό των στοιχείων στον πίνακα στο JavaScript, αλλά αντιγράφει μέρος του.

Μπορείτε να παραλείψετε το δεύτερο όρισμα για να ξεκινήσετε όλα τα στοιχεία από ένα συγκεκριμένο ευρετήριο:

var arr = ["Why", "learn", "JavaScript"]; var arr2 = arr.slice (1) // δέχεται όλα τα στοιχεία που ξεκινούν με 1 ειδοποίηση (arr2.join (",")) // "learn, JavaScript"

Η μέθοδος υποστηρίζει αρνητικούς δείκτες, όπως το String # slice.

Αντίστροφη μέθοδος

Μια άλλη χρήσιμη μέθοδος είναι η αντίστροφη. Ας υποθέσουμε ότι θέλω να λάβω το τελευταίο μέρος του τομέα, για παράδειγμα, " com"Από" my.site.com". Δείτε πώς μπορείτε να το κάνετε:

var domain = "my.site.com" var last = domain.split ("."). reverse () alert (last)

Σημειώστε ότι οι πίνακες JavaScript υποστηρίζουν μια σύνθετη σύνταξη (αντίστροφη ()) για να καλέσετε μια μέθοδο και στη συνέχεια να ανακτήσετε ένα στοιχείο από τον πίνακα που προκύπτει.

Μπορείτε να πραγματοποιήσετε μεγαλύτερες κλήσεις όπως αντίστροφη () 0] arr.sort () alert (arr) // 1, 15, 2

Εκτελέστε τον παραπάνω κώδικα. Θα λάβετε την παραγγελία 1, 15, 2. Αυτό συμβαίνει επειδή η μέθοδος μετατρέπει τα πάντα σε συμβολοσειρά και χρησιμοποιεί την προεπιλεγμένη λεξικογραφική σειρά.

Καλημέρα σε όλους. Ο Alexey Gulynin είναι σε επαφή. Στο τελευταίο άρθρο, αναλύσαμε την κατασκευή θήκης διακόπτη σε javascript. Σε αυτό το άρθρο, θα ήθελα να σας πω τι είναι πίνακες σε Javascript... Η έννοια του πίνακα παίζει σημαντικό ρόλο όχι μόνο στο Javascript, αλλά σε όλο τον προγραμματισμό. Μια μεταβλητή, όπως ένας πίνακας, δεν περιέχει ένα στοιχείο, αλλά πολλά. Η σύνταξη για τη δημιουργία ενός πίνακα είναι η εξής:

Var mas = νέος πίνακας (τιμή1, τιμή2, ..., τιμή N);

Σε αυτήν την περίπτωση, δημιουργείται μια μεταβλητή mas του τύπου πίνακα με τις τιμές που υποδεικνύονται σε παρενθέσεις. Λάβετε υπόψη ότι ο πίνακας δημιουργείται χρησιμοποιώντας τη νέα λέξη-κλειδί. Μπορείτε να ανατρέξετε στα στοιχεία ενός πίνακα καθορίζοντας το όνομα του πίνακα και τον δείκτη του πίνακα σε αγκύλες. Ο δείκτης πίνακα βασίζεται στο μηδέν. Ας δώσουμε ένα παράδειγμα πίνακα με 4 στοιχεία και έξοδο 2 στοιχεία:

Αν βάλουμε mas, θα εκτυπώσει "privet", αφού η ευρετηρίαση του πίνακα ξεκινά από το μηδέν. Ας δούμε τώρα πώς να εμφανίσουμε όλα τα στοιχεία ενός πίνακα. Για να το κάνετε αυτό, πρέπει να χρησιμοποιήσετε έναν βρόχο. Εκτός από τη γνώση των βρόχων στο Javascript, πρέπει να γνωρίζετε την ιδιότητα μήκος των πινάκων, η οποία επιστρέφει τον αριθμό των στοιχείων σε έναν πίνακα (ή, με άλλα λόγια, το μήκος του). Ας εκτυπώσουμε το μήκος του πίνακα mas:

Έξοδος όλων των στοιχείων ενός πίνακα:

Μέχρι στιγμής, έχουμε εξετάσει μονοδιάστατους πίνακες. Γενικά, οι πίνακες μπορεί να είναι πολυδιάστατοι. Το κύριο πράγμα είναι να καταλάβουμε ότι, για παράδειγμα, ένας δισδιάστατος πίνακας είναι ένας πίνακας του οποίου τα στοιχεία είναι πίνακες. Ας αναλύσουμε μαζί σας το ακόλουθο πρόβλημα: πρέπει να δημιουργήσετε έναν δισδιάστατο πίνακα 3 επί 3, τα στοιχεία του οποίου ορίζονται από τον χρήστη και εμφανίζουν αυτόν τον πίνακα. Εδώ θα χρησιμοποιήσουμε τον τελεστή προτροπής για να ζητήσουμε από τον χρήστη έναν αριθμό:

Στην περίπτωσή μας, ένας δισδιάστατος πίνακας αντιστοιχεί (για παράδειγμα) στην ακόλουθη δομή: mas = [,,]. Μπορείτε να δείτε ότι ο πίνακας έχει 3 στοιχεία, καθένα από τα οποία είναι ένας πίνακας ο ίδιος.

Αρχικά, το καθήκον της Javascript ήταν να δημιουργήσει δυναμικούς ιστότοπους. Στην πρακτική μου, δεν έχω χρησιμοποιήσει πουθενά δισδιάστατους πίνακες, μόνο μονοδιάστατους, επομένως οι γνώσεις σχετικά με τους πίνακες που λάβατε από αυτό το άρθρο θα είναι αρκετές. Σε ένα από τα παρακάτω άρθρα, θα μιλήσω για το αντικείμενο Array, τις ιδιότητες και τις μεθόδους του.

Στο JavaScript, οι πολυδιάστατοι πίνακες είναι πίνακες πινάκων. Για να αποκτήσετε πρόσβαση σε ένα στοιχείο, για παράδειγμα, ενός δισδιάστατου πίνακα, πρέπει να καθορίσετε έναν τελεστή δύο φορές.

Ας υποθέσουμε ότι η μεταβλητή μήτρα είναι ένας πίνακας από πίνακες ακεραίων. Κάθε ένα από τα στοιχεία του πίνακα [j] είναι ένας πίνακας αριθμών. Για να αναφερθούμε σε έναν ξεχωριστό αριθμό, χρησιμοποιούμε τον συμβολισμό: matrix [j] [k].

Παράδειγμα. Ας χρησιμοποιήσουμε έναν δισδιάστατο πίνακα για να δημιουργήσουμε τον πίνακα πολλαπλασιασμού.

var matrix = νέος πίνακας (10); // υπάρχουν 10 γραμμές στον πίνακα

για (var j = 0; j< matrix.length; j++)

matrix [j] = νέος πίνακας (10); // d κάθε γραμμή δημιούργησε 10 στήλες

για (var row = 0; row< matrix.length; row++) {

για (col = 0, col< matrix .length; col++) {

matrix = row * col; // γεμίζοντας τα στοιχεία του πίνακα

var rezult = μήτρα; // αποτέλεσμα πολλαπλασιασμού 24

Μια τυπική χρήση ενός πίνακα 2D στο JavaScript είναι η δημιουργία μιας σειράς προσαρμοσμένων επιλογών μενού. Ας υποθέσουμε ότι ορισμένες από τις επιλογές στο κύριο μενού αντιστοιχούν στις επιλογές σε ένα αναπτυσσόμενο υπομενού. Ας δημιουργήσουμε έναν πίνακα του οποίου το μήκος ταιριάζει με τον αριθμό των επιλογών στο κύριο μενού. Τα στοιχεία αυτού του πίνακα θα είναι πίνακες με τα ονόματα των επιλογών που αντιστοιχούν σε αυτά στο υπομενού.

μενού = νέο Аrrаy ();

menu = νέο Аrrаy ("Επιλογή 1.1", "Επιλογή 1.2", "," Επιλογή 1.3 ");

μενού = νέο Аrrаy ("Επιλογή 2.1", "Επιλογή 2. 2");

μενού = νέο Аrrаy ("Επιλογή 3.1", "Επιλογή 3.2", "Επιλογή 3.3", "Επιλογή 3.4");

Για να αποκτήσετε πρόσβαση στην 1η επιλογή του 2ου υπομενού, πρέπει να γράψετε:

Η τιμή του μενού // είναι "Επιλογή 2.1".

Ας αλλάξουμε την κατασκευή του πίνακα έτσι ώστε να περιέχει τόσο τα ονόματα των επιλογών του κύριου μενού όσο και των επιλογών του υπομενού:

μενού = νέο Аrrау ()

μενού = νέο Arrau ("Μενού1", "Μενού2", "Μενού3");

μενού = νέο Аrrау ();

μενού = νέος πίνακας ("Επιλογή 1.1". "Επιλογή 1.2", "Επιλογή 1.3");

μενού = νέο Arrau ("Επιλογή 2.1", "Επιλογή 2. 2");

μενού = νέος πίνακας ("Επιλογή 3.1", "Επιλογή 3. 2", "Επιλογή Η.3", "Επιλογή 3.4");

μενού // η τιμή είναι "Menu2"

μενού // η τιμή είναι "Menu3"

μενού // η τιμή είναι "Επιλογή 2.1"

μενού // η τιμή είναι "Επιλογή 3.2"

Μέθοδοι συστοιχίας

Σε αυτήν την ενότητα, θα εξετάσουμε τις μεθόδους με τις οποίες μπορείτε να χειριστείτε στοιχεία πίνακα.

Συμμετοχή () -μια μέθοδος που μετατρέπει κάθε ένα από τα στοιχεία του πίνακα σε μια συμβολοσειρά και τα ενώνει. Μια προαιρετική συμβολοσειρά μπορεί να καθοριστεί ως όρισμα στη μέθοδο διαχωρισμού μεμονωμένων στοιχείων στη συμβολοσειρά που προκύπτει. Εάν δεν καθορίσετε διαχωριστικό, το προεπιλεγμένο διαχωριστικό είναι κόμμα.

var arr =; // δίνεται ένας πίνακας τριών στοιχείων

var str = arr.join (); // η τιμή str είναι "12,23,38"

str = arr.join (";"); // str == "12; 23; 38"

Όπως αναφέρθηκε προηγουμένως, η μέθοδος Array.join () είναι το αντίστροφο της μεθόδου String.split (), η οποία χωρίζει τις συμβολοσειρές σε στοιχεία πίνακα.

ΑΝΤΙΣΤΡΟΦΗ () -μια μέθοδος που αντιστρέφει τη σειρά των στοιχείων σε έναν πίνακα. Αυτή η μέθοδος δεν δημιουργεί νέο πίνακα, αλλά αλλάζει τη σειρά τους στον αρχικό πίνακα.

var arr = νέο Аrrау (1,2,3); // arr = 1, arr = 2, arr = 3

arr.reverse (); // arr = 3, arr = 2, arr = 1

var str = arr.jоin (); // str == "3,2,1"

είδος () -μια μέθοδος που ταξινομεί τα στοιχεία ενός πίνακα στη θέση τους και επιστρέφει έναν ταξινομημένο πίνακα. Εάν η μέθοδος ταξινόμησης () καλείται χωρίς ορίσματα, θα ταξινομήσει τα στοιχεία του πίνακα αλφαβητικά, μετατρέποντάς τα προσωρινά σε τιμές συμβολοσειράς για να πραγματοποιηθεί σύγκριση εάν είναι απαραίτητο.

var arr = νέο Аrrаy ("μπαναάνα", "сcherry", "μήλο");

var str = arr.join (","); // str == "μήλο, μπανάνα, κεράσι"

Εάν ο πίνακας περιέχει ένα απροσδιόριστο στοιχείο, τυλίγεται στο τέλος του πίνακα.

Προκειμένου να ταξινομηθεί όχι με αλφαβητική σειρά, αλλά με κάποια άλλη σειρά, η μέθοδος ταξινόμησης () μεταβιβάζεται ως όρισμα στη συνάρτηση σύγκρισης, η οποία έχει ως στόχο να υποδείξει τον κανόνα σύμφωνα με τον οποίο ένα από τα δύο ορίσματά της θα βρίσκεται νωρίτερα στο η ταξινομημένη λίστα. Εάν πρέπει να προηγείται το πρώτο όρισμα του δεύτερου, η συνάρτηση σύγκρισης πρέπει να επιστρέψει μια αρνητική τιμή. Εάν στον ταξινομημένο πίνακα το πρώτο όρισμα πρέπει να ακολουθεί το δεύτερο, τότε η συνάρτηση πρέπει να επιστρέψει έναν θετικό αριθμό. Η συνάρτηση σύγκρισης θα πρέπει να επιστρέψει 0 εάν οι δύο τιμές είναι ισοδύναμες, δηλαδή η σειρά τους δεν είναι σημαντική. Παράδειγμα.

Ας ταξινομήσουμε με αριθμητική σειρά.

var arr =;

arr.sort (); // με αλφαβητική σειρά: 11111, 2222, 333, 44

arr.sort (συνάρτηση (πρώτη, δεύτερη) (//

επιστροφή πρώτος - δεύτερος? )); // Αριθμητική σειρά: 44, 333, 2222, 11111

Είναι βολικό να χρησιμοποιήσετε μια λειτουργική κυριολεξία σε αυτό το απόσπασμα κώδικα, επειδή η συνάρτηση σύγκρισης θα κληθεί μία φορά και δεν χρειάζεται να την ονομάσετε.

Ορίζοντας άλλες λειτουργίες ταξινόμησης, μπορείτε να εκτελέσετε μια μεγάλη ποικιλία μεθόδων ταξινόμησης.

concat () -μια μέθοδος που δημιουργεί και επιστρέφει έναν νέο πίνακα που περιέχει τα στοιχεία του αρχικού πίνακα, συμπληρωμένο με τις τιμές όλων των ορισμάτων που καθορίζονται στη μέθοδο concat (). Στην περίπτωση που το ίδιο το όρισμα είναι πίνακας, τα στοιχεία του θα προστεθούν στον πίνακα που προκύπτει. Ωστόσο, πρέπει να σημειωθεί ότι η αναδρομή δεν εκτελείται κατά τη διαίρεση πινάκων από πίνακες.

var arr =;

arr.concаt (4, 5) // αποτέλεσμα

αρ. concat (); // αποτέλεσμα

αρ. concаt (,) // αποτέλεσμα

αρ. concаt (4,]) // αποτέλεσμα]

φέτα () -μια μέθοδος που επιστρέφει έναν υποπίνακα (τεμάχιο) του αρχικού πίνακα. Η μέθοδος έχει δύο ορίσματα που υποδεικνύουν την αρχή και το τέλος του επιστρεφόμενου υποπίνακα. Ο πίνακας που επιστρέφεται θα περιέχει στοιχεία που ξεκινούν από αυτόν του οποίου το ευρετήριο υποδεικνύεται από το πρώτο όρισμα, μέχρι το στοιχείο του οποίου ο δείκτης υποδεικνύεται από το δεύτερο όρισμα, αλλά δεν το περιλαμβάνει.

Εάν καθορίσετε ένα μεμονωμένο όρισμα, ο πίνακας που επιστρέφεται περιέχει στοιχεία από τη θέση που καθορίζεται από το όρισμα μέχρι το τέλος του πίνακα. Ένα αρνητικό όρισμα καθορίζει τον αριθμό του στοιχείου του πίνακα από το τέλος του πίνακα.

var arr =;

arr.slice (0,3); // θα επιστρέψει

αρ. φέτα (3); // θα επιστρέψει

αρ. φέτα (1, -1); // θα επιστρέψει

αρ. φέτα (-3, -2); // θα επιστρέψει

μάτισμα () -μια καθολική μέθοδος που μπορεί να χρησιμοποιηθεί για την προσθήκη και αφαίρεση στοιχείων ενός πίνακα ή και για τις δύο λειτουργίες ταυτόχρονα. Ως αποτέλεσμα της λειτουργίας της μεθόδου, ο αρχικός πίνακας αλλάζει.

Στη μέθοδο splice (), το πρώτο όρισμα καθορίζει τον δείκτη πίνακα από τον οποίο θα ξεκινήσει η διαγραφή ή/και η εισαγωγή, το δεύτερο όρισμα καθορίζει τον αριθμό των στοιχείων που πρέπει να αφαιρεθούν. Εάν παραλείψετε το δεύτερο όρισμα, τότε τα στοιχεία του πίνακα θα αφαιρεθούν, ξεκινώντας από τη θέση που καθορίζεται από το πρώτο όρισμα της μεθόδου και μέχρι το τέλος του πίνακα. Επιστρέφει τη μέθοδο splice (). σειρά στοιχείων που αφαιρέθηκαν.Εάν το δεύτερο όρισμα είναι 0, η μέθοδος θα επιστρέψει έναν κενό πίνακα.

var arr =;

arr.splice (4); // θα επιστρέψει; το arr γίνεται ίσο

arr.splice (1,2); // θα επιστρέψει; το arr γίνεται ίσο

Δύο ορίσματα στη μέθοδο splice (), που καθορίζουν τα στοιχεία του πίνακα που πρέπει να αφαιρεθούν, μπορούν να ακολουθηθούν από οποιαδήποτε ποσότηταπρόσθετα ορίσματα που καθορίζουν τα στοιχεία που θα εισαχθούν στον πίνακα, ξεκινώντας από το ευρετήριο που καθορίζεται από το πρώτο όρισμα της μεθόδου.

var arr =;

arr.splice (2,0, "ab", "cd"); / * θα επιστρέψει; Το arr γίνεται * /

arr.splice (2,2,, 3); / * θα επιστρέψει ["ab", "cd"]; arr γίνεται, 3,33,44,55] * /

Σημειώστε ότι η μέθοδος splice () δεν χωρίζει τα ορίσματα του πίνακα σε ξεχωριστά στοιχεία που πρόκειται να εισαχθούν, αλλά μάλλον εισάγει τον ίδιο τον πίνακα.

push () και pop () -μεθόδους που επιτρέπουν σε πίνακες να χρησιμοποιούνται ως στοίβες. Η μέθοδος push () προσθέτει νέα στοιχεία στο τέλος του πίνακα και επιστρέφει το νέο μήκος του πίνακα. Η μέθοδος pop () αφαιρεί το τελευταίο στοιχείο στον πίνακα και επιστρέφει τη διαγραμμένη τιμή ως αποτέλεσμα.

Και οι δύο μέθοδοι τροποποιούν τον αρχικό πίνακα. Όταν χρησιμοποιείτε έναν συνδυασμό των μεθόδων push () και pop () στο JavaScript, μπορείτε να χρησιμοποιήσετε έναν πίνακα για να δημιουργήσετε μια στοίβα με έναν κανόνα υπηρεσίας πρώτος-σε-τελευταίος-out.

vаr stаk =; // άδεια στοίβα

stack.push (1,2); // πίνακας: θα επιστρέψει 2

σωρός. pop (); // πίνακας: θα επιστρέψει 2

stack.push (3); // πίνακας: θα επιστρέψει 2

stаk.рр (); // πίνακας: θα επιστρέψει 3

stack.push (); // πίνακας:] θα επιστρέψει 2

σωρός. pop () // array: θα επιστρέψει

σωρός. pop (); // πίνακας: θα επιστρέψει 1

unshift () και shift () -μέθοδοι που λειτουργούν σχεδόν το ίδιο με το push () και το pop (), αλλά δεν εισάγουν και αφαιρούν στοιχεία στο τέλος του πίνακα, αλλά στην αρχή.

Η μέθοδος unshift () προσθέτει ένα ή περισσότερα στοιχεία στην αρχή του πίνακα, μετατοπίζοντας τα στοιχεία στο τέλος του πίνακα και επιστρέφει το νέο μήκος του πίνακα. Η μέθοδος shift () χρησιμοποιείται για την αφαίρεση του πρώτου στοιχείου ενός πίνακα, επιστρέφει το αφαιρεθέν στοιχείο.

var arr =; // arr:

arr.unshift (1); // arr: θα επιστρέψει 1

arr.unshift (22); // arr: θα επιστρέψει 2

arr.shift (); // arr: θα επιστρέψει 22

arr.unshift (3,); // arr:, 1] θα επιστρέψει 3

arr.shift (); // arr: [, 1] θα επιστρέψει 3

arr.shift (); // arr: θα επιστρέψει

arr.shift (); // arr: θα επιστρέψει 1

Κατά την κλήση της μεθόδου unshift () με πολλαπλά ορίσματα, αυτά τα ορίσματα εισάγονται όλα ταυτόχρονα, και όχι ένα κάθε φορά, όπως γίνεται στη μέθοδο splice (). Δηλαδή, στον πίνακα που προκύπτει, οι τιμές θα ταξινομηθούν με την ίδια σειρά με την οποία γράφτηκαν στη λίστα ορισμάτων όταν κλήθηκε η μέθοδος.

toString () και toLocaleString ()- μέθοδοι που μετατρέπουν καθένα από τα στοιχεία του πίνακα σε συμβολοσειρά και εμφανίζουν μια λίστα διαχωρισμένων με κόμματα των λαμβανόμενων συμβολοσειρών. Η μέθοδος toString (), όπως σημειώθηκε, είναι διαθέσιμη για οποιοδήποτε αντικείμενο στο JavaScript, συμπεριλαμβανομένου ενός πίνακα. Σημειώστε ότι οι μέθοδοι δεν αφήνουν αγκύλες ή άλλα διαχωριστικά γύρω από τις τιμές του πίνακα.

ToString () // θα επιστρέψει "1,2,3"

["a", "b", "c"]. ToString () // θα επιστρέψει "a, b, c"

] .toString () // θα επιστρέψει "1,2, s"

Η μέθοδος toString () θα επιστρέψει την ίδια συμβολοσειρά με τη μέθοδο join () εάν καλείται χωρίς παραμέτρους.

toLocaleString () - Μια μέθοδος που ενώνει τις συμβολοσειρές που προκύπτουν χρησιμοποιώντας έναν οριοθέτη συγκεκριμένης περιοχής.

Παράδειγμα 1. Δημιουργία κυκλικού banner (slideshow).

Ας δημιουργήσουμε μια σειρά εικόνων που θα εμφανίζονται στη σελίδα κατά διαστήματα.

Αλλαγή εικόνων

Παράδειγμα 2. Έξοδος τυχαίου αφορισμού στη σελίδα. Κάθε φορά που ανανεώνεται η σελίδα εμφανίζεται ένας τυχαίος αφορισμός.

Τυχαίος αφορισμός στη σελίδα

Αντικείμενο ημερομηνίας

Στο JavaScript, το αντικείμενο Date έχει σχεδιαστεί για να λειτουργεί με τιμές ημερομηνίας και ώρας. Ένα αντικείμενο δημιουργείται από τον κατασκευαστή Date () χρησιμοποιώντας τον νέο τελεστή.

var new_day = νέα Ημερομηνία ();/ * Έχει δημιουργηθεί ένα στιγμιότυπο του αντικειμένου, το οποίο αποθηκεύει πληροφορίες σχετικά με την τρέχουσα ώρα και ημερομηνία (διαβάζει την ώρα συστήματος του υπολογιστή). * /

var Χριστούγεννα = νέα ημερομηνία (2016, 11, 25);/ * Δημιούργησε μια παρουσία αντικειμένου με την ημερομηνία των Χριστουγέννων. Οι αριθμοί των μηνών υπολογίζονται από το μηδέν, οπότε ο Δεκέμβριος αριθμείται με τη σειρά 11 * /

Οι μέθοδοι που ορίζονται στο αντικείμενο Ημερομηνία () σάς επιτρέπουν να ορίζετε και να αποθηκεύετε διάφορες τιμές ώρας και ημερομηνίας και να εκτελείτε έναν αριθμό ενεργειών σε αυτές χρησιμοποιώντας είτε τοπική ώρα είτε Μέση ώρα Γκρίνουιτς (GMT).

Christmas.setFullYear (xmas.getFullYear () + 1);/ * Ημερομηνία Χριστουγέννων του επόμενου έτους * /

var weekdau = Christmas.getDay ();// Ημέρα της εβδομάδας των Χριστουγέννων.

document.write ("Σήμερα:" + new_day.toLocaleString ());// Τιμή συμβολοσειράς της τρέχουσας ημερομηνίας και ώρας.

Στη JavaScript, για το αντικείμενο Date (), οι συναρτήσεις ορίζονται (δεν καλούνται μέσω του αντικειμένου Date (), επομένως, όχι μέθοδοι, αλλά συναρτήσεις) για τη μετατροπή μιας ημερομηνίας, η οποία καθορίζεται σε αριθμητική μορφή ή ως συμβολοσειρά, σε μια εσωτερική αναπαράσταση σε χιλιοστά του δευτερολέπτου, η οποία χρησιμοποιείται σε ορισμένες πράξεις με ημερομηνίες.

Ο κατασκευαστής κατά τη δημιουργία μιας νέας παρουσίας του αντικειμένου Date () μπορεί να χρησιμοποιηθεί με τους ακόλουθους τρόπους:

νέα ημερομηνία ();/ * Ο κατασκευαστής Date () χωρίς ορίσματα δημιουργεί ένα αντικείμενο του οποίου η τιμή είναι ίση με την τρέχουσα ημερομηνία και ώρα. * /

νέα Ημερομηνία (αριθμός_χιλιοστά του δευτερολέπτου)./ * Η μόνη αριθμητική τιμή καθορίζεται στον κατασκευαστή, χρησιμοποιείται ως αναπαράσταση της ημερομηνίας σε χιλιοστά του δευτερολέπτου, η οποία είναι ίδια με την τιμή που επιστρέφεται από τη μέθοδο getTime (). * /

νέα Ημερομηνία (date_string_representation);/ * Εάν ένα όρισμα μεμονωμένης συμβολοσειράς καθορίζεται στον κατασκευαστή, αντιμετωπίζεται ως αναπαράσταση συμβολοσειράς της ημερομηνίας στη μορφή που δέχεται η μέθοδος Date.parse (). * /

νέα Ημερομηνία (έτος, μήνας, ημέρα, ώρες, λεπτά, δευτερόλεπτα, χιλιοστά του δευτερολέπτου)./ * Ο κατασκευαστής μπορεί να μεταβιβαστεί από δύο έως επτά αριθμητικά ορίσματα που καθορίζουν τα μεμονωμένα πεδία ημερομηνίας και ώρας. Εκτός από τα δύο πρώτα πεδία που υποδεικνύουν το έτος και τον μήνα, όλα τα άλλα ορίσματα είναι προαιρετικά. * /

Η ημερομηνία () μπορεί να κληθεί ως συνάρτηση χωρίς να καθορίσετε τον νέο τελεστή. Σε αυτήν την περίπτωση, τυχόν ορίσματα που διαβιβάζονται αγνοούνται και επιστρέφεται η τρέχουσα ημερομηνία και ώρα.

Ας υποδείξουμε ποιες τιμές μπορούν να λάβουν τα ορίσματα όταν χρησιμοποιούνται διαφορετικές μορφές του κατασκευαστή:

number_milliseconds είναι ο αριθμός των χιλιοστών του δευτερολέπτου μεταξύ της επιθυμητής ημερομηνίας και των μεσάνυχτων της 1ης Ιανουαρίου 1970 UTC. Ας πούμε, εάν το όρισμα είναι 5000, θα δημιουργηθεί μια ημερομηνία που αντιπροσωπεύει πέντε δευτερόλεπτα μετά τα μεσάνυχτα της 01/01/1970.

date_string_representation - το όρισμα καθορίζει την ημερομηνία και την προαιρετική ώρα ως συμβολοσειρά. Η συμβολοσειρά πρέπει να καθοριστεί σε μια μορφή που κατανοεί η μέθοδος Date.parse ().

έτος - τέσσερα ψηφία του έτους. Για συμβατότητα με προηγούμενες υλοποιήσεις JavaScript, εάν η τιμή του ορίσματος είναι μεταξύ 0 και 99, ο αριθμός 1900 προστίθεται στην τιμή του.

Η ημέρα είναι ένας ακέραιος αριθμός από το 1 έως το 31 που αντιπροσωπεύει την ημέρα του μήνα. Το όρισμα είναι προαιρετικό.

Οι ώρες είναι ένας ακέραιος αριθμός από το 0, που σημαίνει τα μεσάνυχτα, έως το 23. Αυτό το όρισμα είναι προαιρετικό.

Τα λεπτά είναι ένας ακέραιος αριθμός από το 0 έως το 59. Αυτό το όρισμα είναι προαιρετικό.

δευτερόλεπτα. Δευτερόλεπτα σε λεπτά, που προσδιορίζονται ως ακέραιος από το 0 έως το 59. Προαιρετικό όρισμα.

χιλιοστά του δευτερολέπτου είναι ο αριθμός των χιλιοστών του δευτερολέπτου, που καθορίζονται ως ακέραιος, που κυμαίνεται από 0 έως 999. Αυτό το όρισμα είναι προαιρετικό.

Χαιρετισμούς σε όλους όσους ενδιαφέρονται για πολυδιάστατους πίνακες JavaScript και ταξινόμηση. Στην τρέχουσα δημοσίευση, θα προσπαθήσω να καλύψω αυτό το θέμα με όλες τις λεπτομέρειες.

Επομένως, αφού διαβάσετε αυτό το άρθρο, θα μάθετε γιατί χρησιμοποιούνται πολυδιάστατοι πίνακες σε εφαρμογές web, πώς δημιουργούνται και πώς μπορούν να χειριστούν και να ταξινομηθούν. Ας αρχίσουμε να μαθαίνουμε!

Πώς δημιουργούνται οι πολυδιάστατοι πίνακες και σε τι χρησιμεύουν;

Αρχικά, αξίζει να θυμηθούμε πώς δημιουργείται ένας κανονικός μονοδιάστατος πίνακας.

var συστοιχία =

Τώρα θυμηθείτε ότι ένας πολυδιάστατος πίνακας είναι ένας πίνακας πινάκων.Συμφωνώ, ακούγεται σαν ταυτολογία. Ωστόσο, διαβάστε ξανά τον ορισμό. Πράγματι, ένας πολυδιάστατος πίνακας αποτελείται από έναν ορισμένο αριθμό ένθετων.

Σκεφτείτε την ακόλουθη κατάσταση. Στην αρχή ενός παιχνιδιού ο χρήστης εισάγει το όνομά του και μετά το τέλος εμφανίζεται στην οθόνη ένας πίνακας βαθμολογίας με τα ονόματα των παικτών και τα ρεκόρ τους.

Είναι σαφές ότι τέτοιες πληροφορίες αποθηκεύονται σε μια βάση δεδομένων. Αλλά όταν το βγάλουμε από τη βάση δεδομένων, παίρνουμε έναν πολυδιάστατο πίνακα. Σε τελική ανάλυση, κάθε υποσυστοιχία περιέχει τα στοιχεία σύνδεσης του παίκτη και τον αριθμό των πόντων που σημειώθηκαν.

Όλα θα μοιάζουν με αυτό:

var results = [["Markus", 333], ["Natasha", 211], ["Alexey", 124]];

Όπως μπορείτε να δείτε, οι πληροφορίες μπορούν να αποθηκευτούν ετερογενώς. Μπορεί να είναι συμβολοσειρές, αριθμοί και ζυγοί. Αυτό είναι δυνατό επειδή οι πίνακες δεν είναι πληκτρολογημένοι.

Σε αυτήν την περίπτωση, η πρόσβαση στα στοιχεία πραγματοποιείται μέσω ενός διπλού τελεστή.

Για να εμπεδώσετε το υλικό, αναλύστε ένα μικρό πρόγραμμα.

Αποτελέσματα =

Οι πίνακες είναι ένας αρκετά βολικός τρόπος αποθήκευσης παραγγελθέντων σύνθετων δεδομένων κατά την επεξεργασία τους. Επιπλέον, είναι πολύ βολικό να δουλεύεις μαζί τους και, ταυτόχρονα, η ταχύτητα επεξεργασίας τους είναι αρκετά υψηλή.

Μέθοδοι ταξινόμησης δεδομένων

Για πίνακες σε JavaScript, υπάρχει μια ενσωματωμένη μέθοδος που ονομάζεται είδος ()... Αυτό το εργαλείο είναι πολύ ευέλικτο. Και τώρα θα εξηγήσω γιατί.

Εάν χρησιμοποιείτε μια μέθοδο χωρίς παραμέτρους, τότε ταξινομεί αυτόματα τους υποπίνακες κατά το πρώτο στοιχείο με αλφαβητική σειρά. Έτσι, όταν καλείτε Αποτελέσματα.είδος ()το αναλυμένο αντικείμενο θα μοιάζει με αυτό:

Alexey, 124

Markus, 333

Νατάσα, 211

Και αν ανταλλάξετε τα στοιχεία σε κάθε ένθετο πίνακα, θα λάβετε:

124, Alexey

211, Νατάσα

333, Μάρκος

Σε αυτήν την περίπτωση, για σύγκριση, όλα τα στοιχεία μετατρέπονται προσωρινά σε συμβολοσειρές.

Εάν, για να λύσετε ένα συγκεκριμένο πρόβλημα, χρειάζεστε μια συνάρτηση που ταξινομεί στοιχεία με μη τυπικό τρόπο, τότε μπορείτε να τη γράψετε μόνοι σας και να τη μεταβιβάσετε ως παράμετρο σε είδος ()... Θα πρέπει να σημειωθεί ότι μια συνάρτηση που ορίζεται από το χρήστη πρέπει να επιστρέψει:

  • ένας θετικός αριθμός (γενικά επιλέγεται 1) εάν το πρώτο καθορισμένο στοιχείο ακολουθεί το δεύτερο στη σύγκριση.
  • έναν αρνητικό αριθμό (συνήθως -1) εάν το δεύτερο επιλεγμένο στοιχείο ακολουθεί το πρώτο.
  • μηδέν εάν οι δύο δοκιμασμένες τιμές είναι ίσες.

Για παράδειγμα, ας πάρουμε τον αρχικό πίνακα Αποτελέσματαταξινόμηση κατά σημεία. Επιπλέον, τα αποτελέσματα θα ταξινομηθούν από το υψηλότερο στο χαμηλότερο. Αυτό μπορεί να γίνει με δύο τρόπους.

Στην πρώτη έκδοση άλλαξα τη λογική ταξινόμησης, δηλ. σε μια κατάσταση όπου είναι απαραίτητο να επιστρέψω έναν θετικό αριθμό, επιστρέφω έναν αρνητικό και αντίστροφα.

Πίνακας καταγραφής:

Αλλά στη δεύτερη μέθοδο, άφησα ανέπαφη τη λογική ταξινόμησης, αλλά χρησιμοποίησα επιπλέον μια άλλη μέθοδο - ΑΝΤΙΣΤΡΟΦΗ ()... Όπως υποδηλώνει το όνομα, το αντίστροφο αντιστρέφει τη σειρά των στοιχείων.

Επομένως, η συνάρτηση ταξινόμησης () θα μοιάζει με αυτό:

1 2 3 4 5 συνάρτηση RecordSort (a, b) (αν (a> b) επιστρέφει 1, αλλιώς εάν (a< b) return -1; else return 0; }

συνάρτηση RecordSort (a, b) (αν (a> b) επιστρέφει 1, αλλιώς εάν (a< b) return -1; else return 0; }

Μετά από αυτό, ας προσθέσουμε την παραπάνω μέθοδο.

Το συμπέρασμα βγαίνει με παρόμοιο τρόπο.

Θέλω να επιστήσω την προσοχή σας σε ένα σημαντικό σημείο. Όταν χρησιμοποιείτε αυτές τις συναρτήσεις, όλες οι αλλαγές γίνονται στον πίνακα στον οποίο τις εφαρμόζετε. Επομένως, εάν πρέπει να διατηρήσετε την αρχική μορφή των δεδομένων, δημιουργήστε ένα αντίγραφο και, στη συνέχεια, επεξεργαστείτε το.

Λοιπόν, μίλησα για πολυδιάστατους πίνακες και την ταξινόμηση τους. Εάν σας άρεσε το άρθρο, εγγραφείτε στο blog και διαβάστε άλλες εξίσου ενδιαφέρουσες δημοσιεύσεις. Θα ήμουν ευγνώμων για τις αναδημοσιεύσεις. Μέχρι την επόμενη φορά!

Αντίο!

Με εκτίμηση, Roman Chueshov