Πώς να προσδιορίσετε αν μια μεταβλητή περιέχει έναν πίνακα;
sobes.tech AI
Απάντηση από AI
Ο πιο αξιόπιστος τρόπος είναι η χρήση του Array.isArray():
// Ελέγχει αν η τιμή είναι πίνακας
Array.isArray(ηΜεταβλητήΜου);
Αυτή η μέθοδος επιστρέφει true αν η μεταβλητή είναι πίνακας και false διαφορετικά, ανεξάρτητα από το πλαίσιο εκτέλεσης ή άλλους παράγοντες.
Άλλοι, λιγότερο αξιόπιστοι τρόποι περιλαμβάνουν:
-
typeof:// Για πίνακες, το `typeof` θα επιστρέψει 'object' typeof ηΜεταβλητήΜου === 'object';Είναι λιγότερο αξιόπιστο, καθώς το
typeofεπιστρέφει'object'για πολλούς τύπους δεδομένων, όχι μόνο για πίνακες (αντικείμενα, null). -
instanceof:// Ελέγχει αν το αντικείμενο είναι παράδειγμα της κλάσης Array ηΜεταβλητήΜου instanceof Array;Μπορεί να είναι αναξιόπιστο όταν εργάζεστε με iframe ή παράθυρα με διαφορετικά περιβάλλοντα JavaScript, όπου το
Arrayαπό ένα περιβάλλον διαφέρει από το άλλο. -
Έλεγχος κατασκευαστή:
// Ελέγχει αν ο κατασκευαστής της μεταβλητής είναι Array ηΜεταβλητήΜου.constructor === Array;Μπορεί επίσης να δημιουργήσει προβλήματα σε διαφορετικά περιβάλλοντα εκτέλεσης.
Πίνακας σύνοψης:
| Μέθοδος | Αξιοπιστία | Περιγραφή |
|---|---|---|
Array.isArray() |
Υψηλή | Εξειδικευμένο για τον έλεγχο πινάκων. |
typeof ηΜεταβλητήΜου |
Χαμηλή | Για πίνακες, επιστρέφει 'object'. |
ηΜεταβλητήΜου instanceof Array |
Μεσαία/Χαμηλή (ανάλογα με το πλαίσιο) | Ελέγχει αν ανήκει στην κλάση Array. |
ηΜεταβλητήΜου.constructor === Array |
Μεσαία/Χαμηλή (ανάλογα με το πλαίσιο) | Ελέγχει την ιδιότητα constructor. |
Επομένως, το Array.isArray() είναι η προτιμώμενη και πιο αξιόπιστη μέθοδος.