Ένας πίνακας είναι μια ειδική μεταβλητή, η οποία μπορεί να περιέχει περισσότερες από μία τιμές:
const cars = ["Saab", "Volvo", "BMW"];
Δοκιμάστε το μόνοι σας →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<p id="demo"></p>
<script>
const cars = ["Saab", "Volvo", "BMW"];
document.getElementById("demo").innerHTML = cars;
</script>
</body>
</html>
Εάν έχετε μια λίστα στοιχείων (για παράδειγμα, μια λίστα με ονόματα αυτοκινήτων), αποθηκεύστε το τα αυτοκίνητα σε μεμονωμένες μεταβλητές θα μπορούσαν να μοιάζουν με αυτό:
let car1 = "Saab";
let car2 = "Volvo";
let car3 = "BMW";
Ωστόσο, τι γίνεται αν θέλετε να περάσετε από τα αυτοκίνητα και να βρείτε ένα συγκεκριμένο; Και τι θα γινόταν αν είχατε όχι 3 αυτοκίνητα, αλλά 300;
Η λύση είναι μια συστοιχία!
Ένας πίνακας μπορεί να κρατήσει πολλές τιμές κάτω από ένα μόνο όνομα, και μπορείτε πρόσβαση στις τιμές με αναφορά σε έναν αριθμό ευρετηρίου.
Η χρήση ενός array literal είναι ο ευκολότερος τρόπος για να δημιουργήσετε έναν πίνακα JavaScript.
Σύνταξη:
const array_name = [item1, item2, ...];
Είναι κοινή πρακτική να δηλώνετε πίνακες με τη λέξη-κλειδί const.
Μάθετε περισσότερα για το const με πίνακες στο κεφάλαιο: JS Array Const.
const cars = ["Saab", "Volvo", "BMW"];
Δοκιμάστε το μόνοι σας →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<p id="demo"></p>
<script>
const cars = ["Saab", "Volvo", "BMW"];
document.getElementById("demo").innerHTML = cars;
</script>
</body>
</html>
Τα κενά και οι διακοπές γραμμής δεν είναι σημαντικά. Μια δήλωση μπορεί να εκτείνεται σε πολλές γραμμές:
const cars = [
"Saab",
"Volvo",
"BMW"
];
Δοκιμάστε το μόνοι σας →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<p id="demo"></p>
<script>
const cars = [
"Saab",
"Volvo",
"BMW"
];
document.getElementById("demo").innerHTML = cars;
</script>
</body>
</html>
Μπορείτε επίσης να δημιουργήσετε έναν πίνακα και, στη συνέχεια, να δώσετε τα στοιχεία:
const cars = [];
cars[0]= "Saab";
cars[1]= "Volvo";
cars[2]= "BMW";
Δοκιμάστε το μόνοι σας →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<p id="demo"></p>
<script>
const cars = [];
cars[0]= "Saab";
cars[1]= "Volvo";
cars[2]= "BMW";
document.getElementById("demo").innerHTML = cars;
</script>
</body>
</html>
Το ακόλουθο παράδειγμα δημιουργεί επίσης έναν πίνακα και του εκχωρεί τιμές:
const cars = new Array("Saab", "Volvo", "BMW");
Δοκιμάστε το μόνοι σας →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<p id="demo"></p>
<script>
const cars = new Array("Saab", "Volvo", "BMW");
document.getElementById("demo").innerHTML = cars;
</script>
</body>
</html>
Τα δύο παραπάνω παραδείγματα κάνουν ακριβώς το ίδιο.
Δεν χρειάζεται να χρησιμοποιήσετε new Array()
.
Για απλότητα, αναγνωσιμότητα και ταχύτητα εκτέλεσης, χρησιμοποιήστε την κυριολεκτική μέθοδο πίνακα.
Μπορείτε να αποκτήσετε πρόσβαση σε ένα στοιχείο πίνακα ανατρέχοντας στον αριθμό ευρετηρίου:
const cars = ["Saab", "Volvo", "BMW"];
let car = cars[0];
Δοκιμάστε το μόνοι σας →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<h2>Bracket Indexing</h2>
<p>JavaScript array elements are accessed using numeric indexes (starting from 0).</p>
<p id="demo"></p>
<script>
const cars = ["Saab", "Volvo", "BMW"];
document.getElementById("demo").innerHTML = cars[0];
</script>
</body>
</html>
Σημείωση: Τα ευρετήρια του πίνακα ξεκινούν με 0.
Το [0] είναι το πρώτο στοιχείο. Το [1] είναι το δεύτερο στοιχείο.
Αυτή η δήλωση αλλάζει την τιμή του πρώτου στοιχείου στα αυτοκίνητα
:
cars[0] = "Opel";
const cars = ["Saab", "Volvo", "BMW"];
cars[0] = "Opel";
Δοκιμάστε το μόνοι σας →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<h2>Bracket Indexing</h2>
<p>JavaScript array elements are accessed using numeric indexes (starting from 0).</p>
<p id="demo"></p>
<script>
const cars = ["Saab", "Volvo", "BMW"];
cars[0] = "Opel";
document.getElementById("demo").innerHTML = cars;
</script>
</body>
</html>
Η μέθοδος JavaScript toString()
μετατρέπει έναν πίνακα σε συμβολοσειρά τιμών πίνακα (χωρισμένες με κόμμα).
const fruits = ["Banana", "Orange", "Apple", "Mango"];
document.getElementById("demo").innerHTML = fruits.toString();
Αποτέλεσμα:
Banana,Orange,Apple,MangoΔοκιμάστε το μόνοι σας →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<h2>The toString() Method</h2>
<p>The toString() method returns an array as a comma separated string:</p>
<p id="demo"></p>
<script>
const fruits = ["Banana", "Orange", "Apple", "Mango"];
document.getElementById("demo").innerHTML = fruits.toString();
</script>
</body>
</html>
Με τη JavaScript, η πρόσβαση σε ολόκληρο τον πίνακα είναι δυνατή με αναφορά στον πίνακα όνομα:
const cars = ["Saab", "Volvo", "BMW"];
document.getElementById("demo").innerHTML = cars;
Δοκιμάστε το μόνοι σας →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<p id="demo"></p>
<script>
const cars = ["Saab", "Volvo", "BMW"];
document.getElementById("demo").innerHTML = cars;
</script>
</body>
</html>
Οι πίνακες είναι ένας ειδικός τύπος αντικειμένων. Ο τελεστής typeof
στο JavaScript επιστρέφει "αντικείμενο" για συστοιχίες.
Ωστόσο, οι πίνακες JavaScript περιγράφονται καλύτερα ως πίνακες.
Οι πίνακες χρησιμοποιούν αριθμούς για πρόσβαση στα "στοιχεία" τους. Σε αυτό για παράδειγμα, άτομο[0]
επιστρέφει ο Γιάννης:
const person = ["John", "Doe", 46];
Δοκιμάστε το μόνοι σας →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Arrays</h2>
<p>Arrays use numbers to access its elements.</p>
<p id="demo"></p>
<script>
const person = ["John", "Doe", 46];
document.getElementById("demo").innerHTML = person[0];
</script>
</body>
</html>
Τα αντικείμενα χρησιμοποιούν ονόματα για να αποκτήσουν πρόσβαση στα "μέλη". Σε αυτό το παράδειγμα, person.firstName
επιστρέφει ο Γιάννης:
const person = {firstName:"John", lastName:"Doe", age:46};
Δοκιμάστε το μόνοι σας →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Objects</h1>
<p>JavaScript uses names to access object properties.</p>
<p id="demo"></p>
<script>
const person = {firstName:"John", lastName:"Doe", age:46};
document.getElementById("demo").innerHTML = person.firstName;
</script>
</body>
</html>
Οι μεταβλητές JavaScript μπορεί να είναι αντικείμενα. Οι πίνακες είναι ειδικά είδη αντικειμένων.
Εξαιτίας αυτού, μπορείτε να έχετε μεταβλητές διαφορετικών τύπων στο ίδια Συστοιχία.
Μπορείτε να έχετε αντικείμενα σε έναν πίνακα. Μπορείτε να έχετε συναρτήσεις σε έναν πίνακα. Μπορείς έχουν πίνακες σε έναν πίνακα:
myArray[0] = Date.now;
myArray[1] = myFunction;
myArray[2] = myCars;
Η πραγματική δύναμη των πινάκων JavaScript είναι οι ενσωματωμένες ιδιότητες του πίνακα και μέθοδοι:
cars.length // Returns the number of elements
cars.sort() // Sorts the array
Οι μέθοδοι πίνακα καλύπτονται στα επόμενα κεφάλαια.
Η ιδιότητα length
ενός πίνακα επιστρέφει το μήκος ενός πίνακα (τον αριθμό του πίνακα στοιχεία).
const fruits = ["Banana", "Orange", "Apple", "Mango"];
let length = fruits.length;
Δοκιμάστε το μόνοι σας →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<h2>The length Property</h2>
<p>The length property returns the length of an array:</p>
<p id="demo"></p>
<script>
const fruits = ["Banana", "Orange", "Apple", "Mango"];
let size = fruits.length;
document.getElementById("demo").innerHTML = size;
</script>
</body>
</html>
Η ιδιότητα length
είναι πάντα ένα παραπάνω από τον υψηλότερο δείκτη πίνακα.
const fruits = ["Banana", "Orange", "Apple", "Mango"];
let fruit = fruits[0];
Δοκιμάστε το μόνοι σας →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<h2>Bracket Indexing</h2>
<p>JavaScript array elements are accesses using numeric indexes (starting from 0).</p>
<p id="demo"></p>
<script>
const fruits = ["Banana", "Orange", "Apple", "Mango"];
document.getElementById("demo").innerHTML = fruits[0];
</script>
</body>
</html>
const fruits = ["Banana", "Orange", "Apple", "Mango"];
let fruit = fruits[fruits.length - 1];
Δοκιμάστε το μόνοι σας →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<h2>Bracket Indexing</h2>
<p>JavaScript array elements are accesses using numeric indexes (starting from 0).</p>
<p id="demo"></p>
<script>
const fruits = ["Banana", "Orange", "Apple", "Mango"];
document.getElementById("demo").innerHTML = fruits[fruits.length-1];
</script>
</body>
</html>
Ένας τρόπος για να κάνετε βρόχο μέσω ενός πίνακα, είναι η χρήση ενός βρόχου για
:
const fruits = ["Banana", "Orange", "Apple", "Mango"];
let fLen = fruits.length;
let text = "<ul>";
for (let i = 0; i < fLen; i++) {
text += "<li>" + fruits[i] + "</li>";
}
text
+= "</ul>";
Δοκιμάστε το μόνοι σας →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<h2>Looping an Array</h2>
<p id="demo"></p>
<script>
const fruits = ["Banana", "Orange", "Apple", "Mango"];
let fLen = fruits.length;
let text = "<ul>";
for (let i = 0; i < fLen; i++) {
text += "<li>" + fruits[i] + "</li>";
}
text += "</ul>";
document.getElementById("demo").innerHTML = text;
</script>
</body>
</html>
Μπορείτε επίσης να χρησιμοποιήσετε τη συνάρτηση Array.forEach()
:
const fruits = ["Banana", "Orange", "Apple", "Mango"];
let text = "<ul>";
fruits.forEach(myFunction);
text += "</ul>";
function
myFunction(value) {
text += "<li>" + value + "</li>";
}
Δοκιμάστε το μόνοι σας →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<h2>The forEach() Method</h2>
<p>Call a function for each array element:</p>
<p id="demo"></p>
<script>
const fruits = ["Banana", "Orange", "Apple", "Mango"];
let text = "<ul>";
fruits.forEach(myFunction);
text += "</ul>";
document.getElementById("demo").innerHTML = text;
function myFunction(value) {
text += "<li>" + value + "</li>";
}
</script>
</body>
</html>
Ο ευκολότερος τρόπος για να προσθέσετε ένα νέο στοιχείο σε έναν πίνακα είναι να χρησιμοποιήσετε τη μέθοδο push()
:
const fruits = ["Banana", "Orange", "Apple"];
fruits.push("Lemon"); // Adds a new element (Lemon) to fruits
Δοκιμάστε το μόνοι σας →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<h2>The push() Method</h2>
<p>The push method appends a new element to an array.</p>
<button onclick="myFunction()">Try it</button>
<p id="demo"></p>
<script>
const fruits = ["Banana", "Orange", "Apple"];
document.getElementById("demo").innerHTML = fruits;
function myFunction() {
fruits.push("Lemon");
document.getElementById("demo").innerHTML = fruits;
}
</script>
</body>
</html>
Μπορεί επίσης να προστεθεί νέο στοιχείο σε έναν πίνακα χρησιμοποιώντας την ιδιότητα length
:
const fruits = ["Banana", "Orange", "Apple"];
fruits[fruits.length] = "Lemon"; // Adds "Lemon" to fruits
Δοκιμάστε το μόνοι σας →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<p>The length property provides an easy way to append new elements to an array without using the push() method.</p>
<button onclick="myFunction()">Try it</button>
<p id="demo"></p>
<script>
const fruits = ["Banana", "Orange", "Apple"];
document.getElementById("demo").innerHTML = fruits;
function myFunction() {
fruits[fruits.length] = "Lemon";
document.getElementById("demo").innerHTML = fruits;
}
</script>
</body>
</html>
ΠΡΟΕΙΔΟΠΟΙΗΣΗ !
<p>Η προσθήκη στοιχείων με υψηλούς δείκτες μπορεί να δημιουργήσει απροσδιόριστες "τρύπες" σε έναν πίνακα:
const fruits = ["Banana", "Orange", "Apple"];
fruits[6] = "Lemon"; // Creates undefined "holes" in fruits
Δοκιμάστε το μόνοι σας →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<p>Adding elements with high indexes can create undefined "holes" in an array.</p>
<p id="demo"></p>
<script>
const fruits = ["Banana", "Orange", "Apple"];
fruits[6] = "Lemon";
let fLen = fruits.length;
let text = "";
for (i = 0; i < fLen; i++) {
text += fruits[i] + "<br>";
}
document.getElementById("demo").innerHTML = text;
</script>
</body>
</html>
Πολλές γλώσσες προγραμματισμού υποστηρίζουν πίνακες με επώνυμα ευρετήρια.
Οι πίνακες με ονομασμένους δείκτες ονομάζονται συσχετιστικοί πίνακες (ή κατακερματισμοί).
Η JavaScript δεν υποστηρίζει πίνακες με ονομασμένα ευρετήρια.
Στο JavaScript, οι πίνακες χρησιμοποιούν πάντα αριθμημένα ευρετήρια.
const person = [];
person[0] = "John";
person[1] = "Doe";
person[2] = 46;
person.length; // Will return 3
person[0]; // Will return "John"
Δοκιμάστε το μόνοι σας →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<p id="demo"></p>
<script>
const person = [];
person[0] = "John";
person[1] = "Doe";
person[2] = 46;
document.getElementById("demo").innerHTML =
person[0] + " " + person.length;
</script>
</body>
</html>
ΠΡΟΕΙΔΟΠΟΙΗΣΗ !!
Εάν χρησιμοποιείτε ευρετήρια με όνομα, η JavaScript θα επαναπροσδιορίσει τον πίνακα σε ένα αντικείμενο.
Μετά από αυτό, ορισμένες μέθοδοι και ιδιότητες πίνακα θα παράγουν λανθασμένα αποτελέσματα.
const person = [];
person["firstName"] = "John";
person["lastName"] = "Doe";
person["age"] = 46;
person.length; // Will return 0
person[0]; // Will return undefined
Δοκιμάστε το μόνοι σας →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<p>If you use a named index when accessing an array, JavaScript will redefine the array to a standard object, and some array methods and properties will produce undefined or incorrect results.</p>
<p id="demo"></p>
<script>
const person = [];
person["firstName"] = "John";
person["lastName"] = "Doe";
person["age"] = 46;
document.getElementById("demo").innerHTML =
person[0] + " " + person.length;
</script>
</body>
</html>
Στο JavaScript, οι πίνακες χρησιμοποιούν αριθμημένα ευρετήρια.
Στο JavaScript, τα αντικείμενα χρησιμοποιούν επώνυμα ευρετήρια.
Οι πίνακες είναι ένα ειδικό είδος αντικειμένων, με αριθμημένους δείκτες.
Η JavaScript δεν υποστηρίζει συσχετιστικούς πίνακες.
Θα πρέπει να χρησιμοποιείτε αντικείμενα όταν θέλετε να είναι τα ονόματα των στοιχείων συμβολοσειρές (κείμενο).
Θα πρέπει να χρησιμοποιείτε πίνακες όταν θέλετε να είναι τα ονόματα των στοιχείων αριθμοί.
Η JavaScript έχει έναν ενσωματωμένο κατασκευαστή πίνακα new Array()
.
Αλλά μπορείτε να χρησιμοποιήσετε με ασφάλεια το []
.
Αυτές οι δύο διαφορετικές εντολές δημιουργούν και οι δύο έναν νέο κενό πίνακα με το όνομα points:
const points = new Array();
const points = [];
Αυτές οι δύο διαφορετικές εντολές δημιουργούν και οι δύο έναν νέο πίνακα που περιέχει 6 αριθμούς:
const points = new Array(40, 100, 1, 5, 25, 10);
const points = [40, 100, 1, 5, 25, 10];
Δοκιμάστε το μόνοι σας →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<h2>Creating an Array</h2>
<p>Avoid using new Array(). Use [] instead.</p>
<p id="demo"></p>
<script>
//const points = new Array(40, 100, 1, 5, 25, 10);
const points = [40, 100, 1, 5, 25, 10];
document.getElementById("demo").innerHTML = points[0];
</script>
</body>
</html>
Η λέξη-κλειδί νέα
μπορεί να παράγει μερικά απροσδόκητα αποτελέσματα:
// Create an array with three elements:
const points = new Array(40, 100, 1);
Δοκιμάστε το μόνοι σας →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Arrays</h2>
<p>Create an Array with three elements.</p>
<p id="demo"></p>
<script>
var points = new Array(40, 100, 1);
document.getElementById("demo").innerHTML = points;
</script>
</body>
</html>
// Create an array with two elements:
const points = new Array(40, 100);
Δοκιμάστε το μόνοι σας →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Arrays</h2>
<p>Create an Array with two elements.</p>
<p id="demo"></p>
<script>
var points = new Array(40, 100);
document.getElementById("demo").innerHTML = points;
</script>
</body>
</html>
// Create an array with one element ???
const points = new Array(40);
Δοκιμάστε το μόνοι σας →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<p>Avoid using new Array().</p>
<p id="demo"></p>
<script>
var points = new Array(40);
document.getElementById("demo").innerHTML = points;
</script>
</body>
</html>
const points = [40];
δεν είναι το ίδιο με:
const points = new Array(40);
// Create an array with one element:
const points = [40];
Δοκιμάστε το μόνοι σας →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<p>Create an Array with one element.</p>
<p id="demo"></p>
<script>
var points = [40];
document.getElementById("demo").innerHTML = points;
</script>
</body>
</html>
// Create an array with 40 undefined elements:
const points = new Array(40);
Δοκιμάστε το μόνοι σας →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<p>Avoid using new Array().</p>
<p id="demo"></p>
<script>
var points = new Array(40);
document.getElementById("demo").innerHTML = points[0];
</script>
</body>
</html>
Μια κοινή ερώτηση είναι: Πώς μπορώ να ξέρω αν μια μεταβλητή είναι πίνακας;
Το πρόβλημα είναι ότι ο τελεστής JavaScript typeof
επιστρέφει "αντικείμενο
":
const fruits = ["Banana", "Orange", "Apple"];
let type = typeof fruits;
Δοκιμάστε το μόνοι σας →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<h2>The typeof Operator</h2>
<p>The typeof operator, when used on an array, returns object:</p>
<p id="demo"></p>
<script>
const fruits = ["Banana", "Orange", "Apple", "Mango"];
document.getElementById("demo").innerHTML = typeof fruits;
</script>
</body>
</html>
Ο τελεστής typeof επιστρέφει αντικείμενο επειδή ένας πίνακας JavaScript είναι ένας αντικείμενο.
Για την επίλυση αυτού του προβλήματος, το ECMAScript 5 (JavaScript 2009) όρισε μια νέα μέθοδο Array.isArray()
:
Array.isArray(fruits);
Δοκιμάστε το μόνοι σας →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<h2>The isArray() Method</h2>
<p id="demo"></p>
<script>
const fruits = ["Banana", "Orange", "Apple"];
document.getElementById("demo").innerHTML = Array.isArray(fruits);
</script>
</body>
</html>
Ο τελεστής instanceof
επιστρέφει true εάν δημιουργηθεί ένα αντικείμενο από έναν δεδομένο κατασκευαστή:
const fruits = ["Banana", "Orange", "Apple"];
fruits instanceof Array;
Δοκιμάστε το μόνοι σας →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<h2>The instanceof Operator</h2>
<p>The instanceof operator returns true when used on an array:</p>
<p id="demo"></p>
<script>
var fruits = ["Banana", "Orange", "Apple"];
document.getElementById("demo").innerHTML = fruits instanceof Array;
</script>
</body>
</html>
Για μια πλήρη αναφορά σε πίνακα, μεταβείτε στη διεύθυνση μας:
Ολοκληρώστε την αναφορά πίνακα JavaScript.
Η αναφορά περιέχει περιγραφές και παραδείγματα όλων των Array ιδιότητες και μεθόδους.