Πώς να προσδιορίσετε το μήκος ενός πίνακα javascript και πολλές ακόμη συναρτήσεις για την εργασία μαζί τους. Αφαίρεση από πίνακα

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

Τι είναι ένας πίνακας στο JavaScript;

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

Το παρακάτω σχήμα δείχνει έναν αριθμητικό πίνακα που αποτελείται από 5 στοιχεία. Τα στοιχεία αυτού του πίνακα περιέχουν τα ακόλουθα δεδομένα: 123 (δείκτης 0), 7 (δείκτης 1), 50 (δείκτης 2), -9 (δείκτης 3), 24 (δείκτης 4).

Δημιουργία (δήλωση) πίνακα

Η δημιουργία πινάκων σε JavaScript γίνεται συνήθως χρησιμοποιώντας συστοιχία κυριολεκτικά.

Ένας κυριολεκτικός πίνακας αποτελείται από αγκύλες που περιέχουν μια λίστα στοιχείων που χωρίζονται με κόμμα.

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

Var κενό = ; // κενοί αριθμοί var πίνακα = ; // αριθμητικός πίνακας var arr = ; // πίνακας που περιέχει διάφορους τύπους δεδομένων

Οι τιμές σε έναν πίνακα JavaScript δεν χρειάζεται να είναι του ίδιου τύπου. Εκείνοι. Ένας πίνακας μπορεί να περιέχει τιμές διαφορετικών τύπων δεδομένων.

Ένα συγκεκριμένο στοιχείο πίνακα προσεγγίζεται από το ευρετήριό του. Αυτή η λειτουργία ονομάζεται επίσης λειτουργία ευρετηρίασης.

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

// δημιουργήστε έναν πίνακα που αποτελείται από 3 στοιχεία var smartphoneColors = ["Black", "White", "Grey"]; // εμφανίζει στην κονσόλα του προγράμματος περιήγησης τις τιμές των στοιχείων του πίνακα smartphoneColors με ευρετήρια 0 και 2 console.log("Τιμή του στοιχείου πίνακα smartphoneColors με ευρετήριο 0: " + smartphoneColors); // "Η τιμή του στοιχείου πίνακα smartphoneColors με ευρετήριο 0: Μαύρο" console.log("Η τιμή του στοιχείου πίνακα smartphoneColors με ευρετήριο 2: " + smartphoneColors); // "Η τιμή του στοιχείου πίνακα smartphoneColors με δείκτη 0: Γκρι" // αλλάξτε την τιμή του στοιχείου πίνακα smartphoneColors με δείκτη 1 σε "Red" smartphoneColors = "Red"; // ["Black", "Red", "Grey"] // ορίστε το στοιχείο του πίνακα smartphoneColors με δείκτη 3 στην τιμή "Blue" smartphoneColors = "Blue"; // ["Μαύρο", "Κόκκινο", "Γκρι", "Μπλε"]

Μπορείτε να χρησιμοποιήσετε όχι μόνο στατικές τιμές, αλλά και εκφράσεις ως τιμές στοιχείων πίνακα:

Var μήκοςA = 7, πλάτοςA = 5; var point = ;

Τα αντικείμενα μπορούν να χρησιμοποιηθούν ως τιμές στοιχείων πίνακα.

Σημεία Var = [ (x1: 5, y1: 3), (x1: 7, y1: 10), (x1: 12; y1: 0) ]; // πίνακας που αποτελείται από 3 αντικείμενα

Ένας άλλος τρόπος για να δημιουργήσετε έναν πίνακααποτελείται από την κλήση της συνάρτησης κατασκευής Array.

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

Var κενό = νέος πίνακας(); // κενός πίνακας

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

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

Var arr = νέος πίνακας (5); // πίνακας που αποτελείται από 5 στοιχεία (οι τιμές των στοιχείων δεν έχουν καθοριστεί)

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

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

ιδιότητα μήκους (μήκος πίνακα)

Ο προσδιορισμός του μήκους του πίνακα (αριθμός στοιχείων) γίνεται χρησιμοποιώντας την ιδιότητα length.

//δημιουργήστε έναν πίνακα παραθέτοντας τις τιμές των στοιχείων στη συνάρτηση Array var volumeHDDs = new Array("500Gb","1Tb","2Tb"); //αντιστοιχίστε τη μεταβλητή lengthArray στο μήκος του πίνακα volumeHDDs var lengthArray = volumeHDDs.length;

Πώς να αποκτήσετε το πρώτο στοιχείο ενός πίνακα

Η λήψη της τιμής του πρώτου στοιχείου ενός πίνακα γίνεται με τον καθορισμό του αριθμού 0 σε αγκύλες αυτού του πίνακα:

//δημιουργώντας έναν πίνακα που αποτελείται από 3 στοιχεία var volumeHDDs = new Array("500Gb","1Tb","2Tb"); //λήψη της τιμής του πρώτου στοιχείου του πίνακα var firstValue = volumeHDDs;

Πώς να αποκτήσετε το τελευταίο στοιχείο ενός πίνακα

Η τιμή του τελευταίου στοιχείου ενός πίνακα λαμβάνεται καθορίζοντας την έκφραση array_name.length-1 σε αγκύλες αυτού του πίνακα:

//δημιουργώντας έναν πίνακα που αποτελείται από 3 στοιχεία var volumeHDDs = new Array("500Gb","1Tb","2Tb"); //λήψη της τιμής του τελευταίου στοιχείου του πίνακα var lastValue = volumeHDDs;

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

Η επανάληψη μέσω των στοιχείων πίνακα γίνεται χρησιμοποιώντας έναν βρόχο for.

Για παράδειγμα, ας επαναλάβουμε όλα τα στοιχεία του πίνακα και ας εμφανίσουμε τις τιμές τους στην κονσόλα του προγράμματος περιήγησης (F12):

//δημιουργώντας έναν πίνακα nameStudents, που αποτελείται από 4 στοιχεία var nameStudents = new Array("Petya","Vasya","Kolya","Maxim"); //επαναλάβω στοιχεία πίνακα από 0 έως μήκος πίνακα-1 για (var i=0; i<= nameStudents.length-1; i++) { console.log(i+1 + " элемент массива = " + nameStudents[i]); }

Ποιος είναι ο σκοπός του τελεστή διαγραφής;

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

Var namePlanets = νέος πίνακας ("Αφροδίτη", "Ερμής", "Γη", "Άρης"); διαγραφή namePlanets. για (var i=0; i<= namePlanets.length-1; i++) { console.log(i + " элемент массива = " + namePlanets[i]); }

Λειτουργίες για εργασία με πίνακες (μέθοδοι αντικειμένων πίνακα)

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

  • βάρδια
  • μη μετατόπιση
  • φέτα
  • συνδέω
  • διαίρεση
  • ΑΝΤΙΣΤΡΟΦΗ

Μέθοδος Push (προσθήκη στοιχείου στο τέλος του πίνακα)

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

Var namePlanets = ["Αφροδίτη", "Ερμής", "Γη", "Άρης"]; namePlanets.push("Jupiter"); // 5 console.log(namePlanets); // ["Αφροδίτη", "Ερμής", "Γη", "Άρης", "Δίας"]

pop μέθοδος (αφαίρεση του τελευταίου στοιχείου από έναν πίνακα)

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

Var namePlanets = ["Αφροδίτη", "Ερμής", "Γη", "Άρης"]; namePlanets.pop(); // "Mars" console.log(namePlanets); // ["Αφροδίτη", "Ερμής", "Γη"]

Μέθοδος Shift (αφαίρεση του πρώτου στοιχείου από έναν πίνακα)

Η μέθοδος shift έχει σχεδιαστεί για να αφαιρεί το πρώτο στοιχείο από τον πίνακα, δηλ. στοιχείο που έχει δείκτη 0. Όλα τα άλλα στοιχεία του πίνακα μετατοπίζονται στην αρχή, δηλ. για καθένα από αυτά ο δείκτης μειώνεται κατά 1. Αυτή η μέθοδος επιστρέφει την τιμή του αφαιρεθέντος στοιχείου ως αποτέλεσμα.

Var namePlanets = ["Αφροδίτη", "Ερμής", "Γη", "Άρης"]; namePlanets.shift(); // "Venus" console.log(namePlanets); // ["Ερμής", "Γη", "Άρης"]

μέθοδος unshift (προσθήκη στοιχείου στην αρχή του πίνακα)

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

Var namePlanets = ["Ερμής", "Γη", "Άρης", "Δίας"]; namePlanets.unshift("Αφροδίτη"); // 5 console.log(namePlanets); // ["Αφροδίτη", "Ερμής", "Γη", "Άρης", "Δίας"]

μέθοδος slice (αντιγραφή τμήματος ενός πίνακα)

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

Η μέθοδος slice έχει 2 παραμέτρους:

  • 1 παράμετρος (απαιτείται) - προορίζεται να υποδείξει το ευρετήριο του στοιχείου από το οποίο θα ξεκινήσει η αντιγραφή στοιχείων.
  • Παράμετρος 2 (προαιρετική) - προορίζεται να υποδείξει το ευρετήριο του στοιχείου στο οποίο είναι απαραίτητο να αντιγραφεί (σε αυτήν την περίπτωση, δεν περιλαμβάνεται στον νέο πίνακα). Εάν δεν το καθορίσετε, τότε τα στοιχεία μέχρι το τέλος του καθορισμένου πίνακα θα αντιγραφούν.
var namePlanets = ["Αφροδίτη", "Ερμής", "Γη", "Άρης", "Δίας"]; var newNamePlanets = namePlanets.slice(2, 4); // ["Γη", "Άρης"]

Μέθοδος Splice (αλλαγή των περιεχομένων ενός πίνακα)

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

Η σύνταξη της μεθόδου splice είναι:

Array.splice(startIndex, deleteCount [, element1[, element2[, ...]]]); /* startIndex (απαιτείται) - ο αρχικός δείκτης του στοιχείου από το οποίο θα ξεκινήσει η αλλαγή του πίνακα. Εάν καθορίσετε έναν αριθμό μεγαλύτερο από το μήκος του πίνακα ως startIndex, τότε ο δείκτης έναρξης θα οριστεί στο τέλος του πίνακα. Εάν καθορίσετε έναν αρνητικό αριθμό ως startIndex, τότε το στοιχείο έναρξης θα μετρηθεί από το τέλος. deleteCount (απαιτείται) - ένας αριθμός που υποδεικνύει πόσα στοιχεία πρέπει να διαγραφούν από τον πίνακα. Εάν τα στοιχεία δεν χρειάζεται να διαγραφούν από τον πίνακα, τότε το deleteCount πρέπει να οριστεί σε 0. Μετά από αυτό, πρέπει να καθορίσετε τουλάχιστον ένα νέο στοιχείο που θα προστεθεί στον πίνακα. Εάν καθορίσετε έναν αριθμό ως deleteCount που θα υπερβαίνει τον αριθμό των υπολειπόμενων στοιχείων στον πίνακα, ξεκινώντας από το startIndex, τότε σε αυτήν την περίπτωση θα εξακολουθούν να διαγράφονται (δηλαδή, όλα τα στοιχεία μέχρι το τέλος του πίνακα, ξεκινώντας από το αρχικό ευρετήριο) element1, element2, ... (προαιρετικό) - στοιχεία που πρέπει να προστεθούν στον πίνακα. */

Παραδείγματα χρήσης της μεθόδου ματίσματος.

Χρησιμοποιώντας τη μέθοδο splice για να αφαιρέσετε ορισμένα στοιχεία από έναν πίνακα.

Var namePlanets = ["Αφροδίτη", "Ερμής", "Γη", "Άρης"]; namePlanets.splice(2, 2); //["Earth", "Mars"] console.log(namePlanets); // ["Αφροδίτη", "Ερμής"]

Χρησιμοποιώντας τη μέθοδο splice για να αφαιρέσετε ένα στοιχείο από έναν πίνακα και να προσθέσετε νέα σε αυτόν.

Var namePlanets = ["Αφροδίτη", "Ερμής", "Γη", "Άρης"]; namePlanets.splice(1, 1, "Uranus", "Neptune", "Saturn"); // ["Mercury"] console.log(namePlanets); // ["Αφροδίτη", "Ουρανός", "Ποσειδώνας", "Κρόνος", "Γη", "Άρης"]

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

Var namePlanets = ["Δίας", "Κρόνος", "Ουρανός"]; namePlanets.splice(0, 0, "Venus", "Mercury", "Earth", "Mars"); // console.log(namePlanets); // ["Αφροδίτη", "Ερμής", "Γη", "Άρης", "Δίας", "Κρόνος", "Ουρανός"]

μέθοδος ένωσης (μετατροπή πίνακα σε συμβολοσειρά)

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

Σύνταξη μεθόδου σύνδεσης:

Array.join(); /* separator (προαιρετικό) - ένας διαχωριστής που χρησιμοποιείται ως συνδετική συμβολοσειρά μεταξύ κάθε στοιχείου πίνακα. Εάν αυτή η παράμετρος δεν έχει καθοριστεί, το "," θα χρησιμοποιηθεί ως συμβολοσειρά σύνδεσης. Εάν καθορίσετε μια κενή συμβολοσειρά ως παράμετρο, τότε τα στοιχεία του πίνακα στην επιστρεφόμενη συμβολοσειρά δεν θα διαχωρίζονται με τίποτα */

Var berries = ["Σταφύλια", "Σταφύλια", "Φραγκοστάφυλα", "Ροζ Hip"]; var berriesStr1 = berries.join(); // "Grapes, Grapes, Currants, Rose Hips" var berriesStr2 = berries.join(""); // "GrapesGrapesCurrantRosehip" var berriesStr3 = berries.join(", "); // "Grapes, Grapes, Currants, Rosehips" var berriesStr4 = berries.join(" + "); // "Σταφύλια + Σταφύλια + Σταφίδες + Τριαντάφυλλα"

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

Var berries = ["Σταφύλια", "Σταφύλια", "Φραγκοστάφυλα", "Ροζ Hip"]; var berriesStr1 = berries.join(false); // "GrapesfalseGrapesfalseCurrantfalseRosehip" var berriesStr2 = berries.join(4/2); // "Grapes2Grapes2Currant2Rose Hip" Στοιχεία πίνακα που έχουν null ή απροσδιόριστη τιμή θα μεταφερθούν στην κενή συμβολοσειρά. var arr = ; var arrStr = arr.join(", "); // "0, 5, -4"

Μετατροπή συμβολοσειράς σε πίνακα - διαίρεση

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

Var strElementComputers = "Μονάδα συστήματος, οθόνη, πληκτρολόγιο, ποντίκι, ηχεία, εκτυπωτής"; var elementComputers = strElementComputers.split(", "); console.log("Αριθμός στοιχείων στον πίνακα: " + elementComputers.length); για (var i=0; i<= elementComputers.length-1; i++) { console.log(i + " элемент массива = " + elementComputers[i]); }

Αναδιάταξη στοιχείων πίνακα με αντίστροφη σειρά - αντίστροφη

Η αντίστροφη μέθοδος έχει σχεδιαστεί για την αναδιάταξη στοιχείων πίνακα με αντίστροφη σειρά.

Var namePlanets = νέος πίνακας ("Αφροδίτη", "Ερμής", "Γη", "Άρης"); namePlanets.reverse(); console.log("Αριθμός στοιχείων στον πίνακα: " + namePlanets.length); για (var i=0; i<= namePlanets.length-1; i++) { console.log(i + " элемент массива = " + namePlanets[i]); }

Ταξινόμηση στοιχείων πίνακα - ταξινόμηση

Η μέθοδος ταξινόμησης χρησιμοποιείται για την ταξινόμηση στοιχείων πίνακα. Από προεπιλογή, αυτή η μέθοδος ταξινομεί τον πίνακα ως συμβολοσειρές.

Var namePlanets = νέος πίνακας ("Αφροδίτη", "Ερμής", "Γη", "Άρης"); namePlanets.sort(); console.log("Αριθμός στοιχείων στον πίνακα: " + namePlanets.length); για (var i=0; i<= namePlanets.length-1; i++) { console.log(i + " элемент массива = " + namePlanets[i]); }

21/06/2017 στις 12:17

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

Var arr = ["πρώτος", "δεύτερος"]; console.log(arr.length); // 2

Οι πίνακες στο javascript μπορεί να έχουν ευρετήρια που λείπουν. Για παράδειγμα

Var arr = ; arr = "πρώτος"; arr = "δεύτερο";

Η ιδιότητα length επιστρέφει τον μέγιστο δείκτη του πίνακα + 1. δηλ. στο παράδειγμα που δίνεται, μήκος = 5.

Υπολογισμός του αριθμού των στοιχείων σε έναν πίνακα σε javascript

Array.prototype.count = function())( var αποτέλεσμα = 0; for(var i = 0; i< this.length; i++) if (this[i] != undefined) result++; return result; }

Παράδειγμα χρήσης

Var arr = ; arr = "πρώτος"; arr = "δεύτερο"; console.log(arr.count()); //2

Μπορείτε επίσης να αντιστοιχίσετε μια τιμή στην ιδιότητα μήκος. Αυτό σας επιτρέπει να μειώσετε το μήκος ενός υπάρχοντος πίνακα.

Var arr = ["πρώτος", "δεύτερος", "τρίτος"]; arr.length = 2; console.log(arr); // ["πρώτο δευτερόλεπτο"]

Υπολογισμός του μεγέθους ενός πίνακα σε byte σε javascript

Οι πίνακες είναι κανονικά αντικείμενα, επομένως ο υπολογισμός του μεγέθους ενός πίνακα σε byte δεν διαφέρει από τον υπολογισμό του μεγέθους οποιουδήποτε άλλου αντικειμένου. Δυστυχώς, η javascript δεν παρέχει API για τον υπολογισμό του μεγέθους, επομένως θα πρέπει να το υπολογίσετε μόνοι σας. Αυτό γίνεται ως εξής: εξετάζουμε όλες τις ιδιότητες του αντικειμένου· εάν η ιδιότητα είναι πρωταρχικού τύπου, προσθέτουμε το μέγεθος μιας παρουσίας αυτού του τύπου στο συνολικό αποτέλεσμα· εάν η ιδιότητα περιέχει ένα αντικείμενο, υπολογίζουμε αναδρομικά το μέγεθός του.

Συνάρτηση sizeOf(obj) ( var byte = 0; if(obj !== null && obj !== undefined) ( switch(typeof obj) ( case "number": bytes += 8; break; case "string": bytes += obj.length * 2; break; case "boolean": bytes += 4; break; case "object": for(var key in obj) ( bytes += sizeOf(obj); ) break; ) ) bytes επιστροφής ; );

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

Τελευταία ενημέρωση: 26/03/2018

Το αντικείμενο Array αντιπροσωπεύει έναν πίνακα και παρέχει έναν αριθμό ιδιοτήτων και μεθόδων με τις οποίες μπορούμε να χειριστούμε τον πίνακα.

Εκκίνηση ενός πίνακα

Μπορείτε να δημιουργήσετε έναν κενό πίνακα χρησιμοποιώντας αγκύλες ή τον κατασκευαστή Array:

Var users = new Array(); var άνθρωποι = ; console.log(users); // Array console.log(people); //Πίνακας

Μπορείτε να αρχικοποιήσετε αμέσως έναν πίνακα με έναν ορισμένο αριθμό στοιχείων:

Var users = new Array("Tom", "Bill", "Alice"); var people = ["Sam", "John", "Kate"]; console.log(users); // ["Tom", "Bill", "Alice"] console.log(people); // ["Sam", "John", "Kate"]

Μπορείτε να ορίσετε έναν πίνακα και να προσθέσετε νέα στοιχεία σε αυτόν καθώς προχωράτε:

Var users = new Array(); χρήστες = "Tom"; χρήστες = "Kate"; console.log(users); // "Tom" console.log(users); //απροσδιόριστος

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

μήκος

Για να μάθετε το μήκος ενός πίνακα, χρησιμοποιήστε την ιδιότητα length:

Var fruit = new Array(); φρούτο = "μήλα"; φρούτο = "αχλάδια"; φρούτο = "δαμάσκηνα"; document.write("In the array fruit " + fruit.length + " element:
"); for(var i=0; i< fruit.length; i++) document.write(fruit[i] + "
");

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

Var users = new Array(); // υπάρχουν 0 στοιχεία στον πίνακα χρήστες = "Tom"; χρήστες = "Kate"; χρήστες = "Σαμ"; for(var i=0; i

Έξοδος προγράμματος περιήγησης:

Tom Kate undefined undefined Sam

Παρά το γεγονός ότι δεν προσθέσαμε στοιχεία για τους δείκτες 2 και 3, το μήκος του πίνακα σε αυτήν την περίπτωση θα είναι ο αριθμός 5. Απλώς τα στοιχεία με τους δείκτες 2 και 3 θα έχουν την τιμή απροσδιόριστη .

Αντιγραφή πίνακα. φέτα()

Η αντιγραφή ενός πίνακα μπορεί να είναι ρηχή ή ρηχή (ρηχό αντίγραφο) και βαθιά (βαθύ αντίγραφο).

Για ρηχή αντιγραφή, αρκεί να αντιστοιχίσετε σε μια μεταβλητή την τιμή μιας άλλης μεταβλητής που αποθηκεύει έναν πίνακα:

Var users = ["Tom", "Sam", "Bill"]; console.log(users); // ["Tom", "Sam", "Bill"] var people = χρήστες; // ρηχή αντιγραφή ανθρώπων = "Mike"; // αλλαγή του δεύτερου στοιχείου console.log(users); // ["Tom", "Mike", "Bill"]

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

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

Var users = ["Tom", "Sam", "Bill"]; console.log(users); // ["Tom", "Sam", "Bill"] var people = users.slice(); // deep copy people = "Mike"; // αλλαγή του δεύτερου στοιχείου console.log(users); // ["Tom", "Sam", "Bill"] console.log(people); // ["Tom", "Mike", "Bill"]

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

Η μέθοδος slice() σάς επιτρέπει επίσης να αντιγράψετε μέρος ενός πίνακα:

Var users = ["Tom", "Sam", "Bill", "Alice", "Kate"]; var people = users.slice(1, 4); console.log(people); // ["Sam", "Bill", "Alice"]

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

Σπρώξτε()

Η μέθοδος push() προσθέτει ένα στοιχείο στο τέλος του πίνακα:

Var φρούτα = ; fruit.push("μήλα"); fruit.push("αχλάδια"); fruit.push("δαμάσκηνα"); φρούτα.push("κεράσι","βερίκοκο
"); document.write(fruit); // μήλα, αχλάδια, δαμάσκηνα, κεράσια, βερίκοκα

κρότος()

Η μέθοδος pop() αφαιρεί το τελευταίο στοιχείο από τον πίνακα:

Var φρούτα = ["μήλα", "αχλάδια", "δαμάσκηνα"]; var lastFruit = fruit.pop(); // εξαγωγή του τελευταίου στοιχείου από τον πίνακα document.write(lastFruit + "
"); document.write("In the array fruit " + fruit.length + " element:
"); for(var i=0; i ");

Έξοδος προγράμματος περιήγησης:

Δαμάσκηνα Η σειρά φρούτων έχει 2 στοιχεία: μήλα αχλάδια

βάρδια()

Η μέθοδος shift() ανακτά και αφαιρεί το πρώτο στοιχείο από τον πίνακα:

Var φρούτα = ["μήλα", "αχλάδια", "δαμάσκηνα"]; var firstFruit = fruit.shift(); document.write(firstFruit + "
"); document.write("In the array fruit " + fruit.length + " element:
"); for(var i=0; i ");

Έξοδος προγράμματος περιήγησης:

Μήλα Η σειρά φρούτων έχει 2 στοιχεία: αχλάδια δαμάσκηνα

unshift()

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

Var φρούτα = ["μήλα", "αχλάδια", "δαμάσκηνα"]; fruit.unshift("βερίκοκα"); document.write(fruit);

Έξοδος προγράμματος περιήγησης:

Βερίκοκα, μήλα, αχλάδια, δαμάσκηνα

Αφαίρεση στοιχείου ανά ευρετήριο. συνδέω()

Η μέθοδος splice() αφαιρεί στοιχεία σε ένα συγκεκριμένο ευρετήριο. Για παράδειγμα, κατάργηση στοιχείων από το τρίτο ευρετήριο:

Var users = ["Tom", "Sam", "Bill", "Alice", "Kate"]; var deleted = users.splice(3); console.log(deleted); // [ "Alice", "Kate" ] console.log(users); // [ "Tom", "Sam", "Bill" ]

Η μέθοδος slice επιστρέφει τα αφαιρεμένα στοιχεία.

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

Var users = ["Tom", "Sam", "Bill", "Alice", "Kate"]; var deleted = users.splice(-1); console.log(deleted); // [ "Kate" ] console.log(users); // [ "Tom", "Sam", "Bill", "Alice" ]

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

Var users = ["Tom", "Sam", "Bill", "Alice", "Kate"]; var deleted = users.splice(1,3); console.log(deleted); // [ "Sam", "Bill", "Alice" ] console.log(users); // [ "Tom", "Kate" ]

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

Var users = ["Tom", "Sam", "Bill", "Alice", "Kate"]; var deleted = users.splice(1,3, "Ann", "Bob"); console.log(deleted); // [ "Sam", "Bill", "Alice" ] console.log(users); // [ "Tom", "Ann", "Bob", "Kate" ]

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

concat()

Η μέθοδος concat() χρησιμοποιείται για τον συνδυασμό πινάκων:

Var φρούτα = ["μήλα", "αχλάδια", "δαμάσκηνα"]; var λαχανικά = ["ντομάτες", "αγγούρια", "πατάτες"]; var products = φρούτα.concat(λαχανικά); for(var i=0; i< products.length; i++) document.write(products[i] + "
");

Σε αυτήν την περίπτωση, δεν είναι απαραίτητο να συνδυαστούν μόνο πίνακες του ίδιου τύπου. Είναι δυνατοί διάφοροι τύποι:

Var φρούτα = ["μήλα", "αχλάδια", "δαμάσκηνα"]; τιμες var = ; var products = fruit.concat(τιμές);

Συμμετοχή()

Η μέθοδος join() ενώνει όλα τα στοιχεία ενός πίνακα σε μια συμβολοσειρά:

Var φρούτα = ["μήλα", "αχλάδια", "δαμάσκηνα", "βερίκοκα", "ροδάκινα"]; var fruitString = fruit.join(", "); document.write(fruitString);

Η μέθοδος join() περνά στον διαχωριστή μεταξύ στοιχείων πίνακα. Σε αυτήν την περίπτωση, ένα κόμμα και ένα κενό (", ") θα χρησιμοποιηθούν ως διαχωριστικό.

είδος()

Η μέθοδος sort() ταξινομεί τον πίνακα με αύξουσα σειρά:

Var φρούτα = ["μήλα", "αχλάδια", "δαμάσκηνα", "βερίκοκα", "ροδάκινα"]; fruit.sort(); for(var i=0; i< fruit.length; i++) document.write(fruit[i] + "
");

Έξοδος προγράμματος περιήγησης:

Βερίκοκα αχλάδια ροδάκινα δαμάσκηνα μήλα

ΑΝΤΙΣΤΡΟΦΗ()

Η μέθοδος reverse() αντιστρέφει τον πίνακα προς τα πίσω:

Var φρούτα = ["μήλα", "αχλάδια", "δαμάσκηνα", "βερίκοκα", "ροδάκινα"]; fruit.reverse(); for(var i=0; i< fruit.length; i++) document.write(fruit[i] + "
");

Έξοδος προγράμματος περιήγησης:

Ροδάκινα βερίκοκα δαμάσκηνα αχλάδια μήλα

Σε συνδυασμό με τη μέθοδο sort(), μπορείτε να ταξινομήσετε τον πίνακα με φθίνουσα σειρά:

Var φρούτα = ["μήλα", "αχλάδια", "δαμάσκηνα", "βερίκοκα", "ροδάκινα"]; fruit.sort().reverse(); for(var i=0; i< fruit.length; i++) document.write(fruit[i] + "
");

Έξοδος προγράμματος περιήγησης:

Μήλα δαμάσκηνα ροδάκινα αχλάδια βερίκοκα

Εύρεση του ευρετηρίου ενός στοιχείου

Οι μέθοδοι indexOf() και lastIndexOf() επιστρέφουν τον δείκτη της πρώτης και της τελευταίας συμπερίληψης ενός στοιχείου στον πίνακα. Για παράδειγμα:

Var φρούτα = ["μήλα", "αχλάδια", "δαμάσκηνα", "μήλα", "αχλάδια"]; var firstIndex = fruit.indexOf("μήλα"); var lastIndex = φρούτα.lastIndexOf("μήλα"); var otherIndex = φρούτα.indexOf("κερασιά"); document.write(firstIndex); // 0 document.write(lastIndex); // 3 document.write(otherIndex); // -1

Το firstIndex έχει τιμή 0, επειδή η πρώτη συμπερίληψη της γραμμής "μήλα" στον πίνακα είναι στον δείκτη 0 και η τελευταία είναι στον δείκτη 3.

Εάν το στοιχείο δεν βρίσκεται στον πίνακα, τότε σε αυτήν την περίπτωση οι μέθοδοι indexOf() και lastIndexOf() επιστρέφουν την τιμή -1.

κάθε()

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

Αριθμοί Var = [ 1, -12, 8, -4, 25, 42 ]; Συνθήκη συνάρτησης(τιμή, ευρετήριο, πίνακας) ( var result = false; if (value > 0) ( result = true; ) return αποτέλεσμα; ); var passed = numbers.every(condition); document.write(passed); // ψευδής

Στη μέθοδο every() μεταβιβάζεται μια συνάρτηση που αντιπροσωπεύει τη συνθήκη ως παράμετρο. Αυτή η συνάρτηση παίρνει τρεις παραμέτρους:

Συνθήκη συνάρτησης (τιμή, ευρετήριο, πίνακας) ( )

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

Σε αυτή τη συνάρτηση μπορούμε να ελέγξουμε την τιμή του στοιχείου που έχει περάσει για συμμόρφωση με κάποια συνθήκη. Για παράδειγμα, σε αυτό το παράδειγμα ελέγχουμε κάθε στοιχείο του πίνακα για να δούμε αν είναι μεγαλύτερο από το μηδέν. Αν είναι μεγαλύτερο, τότε επιστρέφουμε την τιμή true, δηλαδή το στοιχείο πληροί την συνθήκη. Εάν είναι μικρότερο, τότε επιστρέψτε το false - το στοιχείο δεν πληροί την προϋπόθεση.

Ως αποτέλεσμα, όταν καλείται η μέθοδος numbers.every(condition), επαναλαμβάνει όλα τα στοιχεία του πίνακα αριθμών και τα περνά ένα προς ένα στη συνάρτηση συνθήκης. Εάν αυτή η συνάρτηση επιστρέψει true για όλα τα στοιχεία, τότε η μέθοδος every() επιστρέφει true. Εάν τουλάχιστον ένα στοιχείο δεν ταιριάζει με τη συνθήκη, τότε η μέθοδος every() επιστρέφει false .

μερικοί()

Η μέθοδος some() είναι παρόμοια με τη μέθοδο every(), μόνο ελέγχει εάν τουλάχιστον ένα στοιχείο ταιριάζει με μια συνθήκη. Και σε αυτήν την περίπτωση, η μέθοδος some() επιστρέφει true . Εάν δεν υπάρχουν στοιχεία που να ταιριάζουν με τη συνθήκη στον πίνακα, επιστρέφεται το false:

Αριθμοί Var = [ 1, -12, 8, -4, 25, 42 ]; Συνθήκη συνάρτησης(τιμή, ευρετήριο, πίνακας) ( var αποτέλεσμα = false; if (value === 8) ( result = true; ) return αποτέλεσμα; ); var passed = numbers.some(condition); // αληθές

φίλτρο()

Η μέθοδος filter(), όπως some() και every() , δέχεται μια συνάρτηση συνθήκης. Αλλά ταυτόχρονα επιστρέφει έναν πίνακα από εκείνα τα στοιχεία που πληρούν αυτήν την προϋπόθεση:

Αριθμοί Var = [ 1, -12, 8, -4, 25, 42 ]; Συνθήκη συνάρτησης(τιμή, ευρετήριο, πίνακας) ( var result = false; if (value > 0) ( result = true; ) return αποτέλεσμα; ); var filteredNumbers = numbers.filter(condition); for(var i=0; i< filteredNumbers.length; i++) document.write(filteredNumbers[i] + "
");

Έξοδος προγράμματος περιήγησης:

1 8 25 42

forEach() και map()

Οι μέθοδοι forEach() και map() επαναλαμβάνονται πάνω από στοιχεία και εκτελούν ορισμένες λειτουργίες σε αυτά. Για παράδειγμα, για να υπολογίσετε τα τετράγωνα των αριθμών σε έναν πίνακα, μπορείτε να χρησιμοποιήσετε τον ακόλουθο κώδικα:

Αριθμοί Var = [1, 2, 3, 4, 5, 6]; for(var i = 0; i "); }

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

Αριθμοί Var = [1, 2, 3, 4, 5, 6]; συνάρτηση square(τιμή, ευρετήριο, πίνακας) ( var αποτέλεσμα = τιμή * τιμή; document.write("Το τετράγωνο του αριθμού " + τιμή + " είναι " + αποτέλεσμα + "
"); ); numbers.forEach(square);

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

Η μέθοδος map() είναι παρόμοια με τη μέθοδο forEach, παίρνει επίσης ως παράμετρο μια συνάρτηση που εκτελεί λειτουργίες στα στοιχεία του πίνακα, αλλά η μέθοδος map() επιστρέφει έναν νέο πίνακα με τα αποτελέσματα των πράξεων στα στοιχεία του πίνακα.

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

Αριθμοί Var = [1, 2, 3, 4, 5, 6]; συνάρτηση τετράγωνο(τιμή, ευρετήριο, πίνακας) (επιστρέφει αποτέλεσμα = τιμή * τιμή; ); var SquareArray = numbers.map(square); document.write(squareArray);

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

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

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

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

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

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

var fruits = ["Apple", "Orange", "Donkey"] alert(fruits.length)

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

μεθόδους pop και push

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

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

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

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

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

var fruits = ["Μήλο", "Πορτοκάλι"] fruits.push("Ροδάκινο"); // τώρα έχουμε ["Apple", "Orange", "Peach"] alert("Last element:"+fruits)

  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", " Orange"] alert(fruits.length) // 2

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

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

Αυτοδιαχειριζόμενο έργο

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

var arr = ["Δαμάσκηνο","Πορτοκάλι","Γάιδαρος","Καρότο","JavaScript"]

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

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

Λύση

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

var arr = ["Δαμάσκηνο","Πορτοκαλί","Γάιδαρος","Καρότο","JavaScript"] var rand = Math.floor(Math.random()*arr.length) alert(arr)

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

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

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

Αυτοδιαχειριζόμενο έργο

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

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

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

Λύση

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

συνάρτηση find(array, value) (για(var i=0; i

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

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

συνάρτηση find(array, value) (if (array.indexOf) return array.indexOf(value) for(var i=0; i

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

Αυτοδιαχειριζόμενο έργο

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

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

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

Λύση

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

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

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

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

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

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

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

Αυτοδιαχειριζόμενο έργο

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

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

ddClass(obj, "new") // obj.className="open menu new" 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, ένας πίνακας είναι ένα αντικείμενο, πλήρες με αυτόματη ρύθμιση μήκους και ειδικές μεθόδους.

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

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

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

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(function() ( alert(this) )) arr() // ?

Λύση

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

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

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

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

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

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

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

var fruits = // κενή σειρά φρούτων = "Peach" fruits = "Apple" alert(fruits) // ,Peach,Apple (ή κάτι τέτοιο)

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

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

var fruits = φρούτα = "Peach" fruits = "Apple" alert(fruits.pop()) // pop "Apple" (στο ευρετήριο 9) alert(fruits.pop()) // pop a unspecified element (to index 8 )

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

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

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

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

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

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

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

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

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

arr.splice(index, deleteCount[, elem1, ..., elemN])

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

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

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

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

var arr = ["Go", "to", "home"] arr.splice(0, 1) // remove 1 element, starting from index 0 alert(arr) // "to" έγινε το πρώτο στοιχείο

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

Η μέθοδος splice επιστρέφει έναν πίνακα αφαιρεμένων στοιχείων:

var arr = ["Μετάβαση", "προς", "σπίτι", "τώρα"]; // αφαιρέστε τα πρώτα 2 στοιχεία var remove = arr.splice(0, 2) alert(removed) // "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 = (Όνομα κλάσης: "ανοιχτό μενού")

Γράψτε μια συνάρτηση 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 . Που επιταχύνει την αναζήτηση ιδιοτήτων σε c .

μέθοδος φέτας

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

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

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

var arr = ["Γιατί", "μαθαίνω", "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 υποστηρίζουν μια σύνθετη σύνταξη (reverse()) για την κλήση μιας μεθόδου και στη συνέχεια την ανάκτηση ενός στοιχείου από τον πίνακα που προκύπτει.

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

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