Περισσότερα
Πώς να ελέγξετε αν ένα αντικείμενο είναι ένας πίνακας;
Προσπαθώ να γράψω μια συνάρτηση που είτε δέχεται μια λίστα συμβολοσειρών είτε μια απλή συμβολοσειρά. Αν είναι μια συμβολοσειρά, τότε θέλω να τη μετατρέψω σε πίνακα με μόνο ένα στοιχείο. Στη συνέχεια, μπορώ να κάνω βρόχο πάνω από αυτό χωρίς να φοβάμαι για σφάλμα.
Πώς μπορώ λοιπόν να ελέγξω αν η μεταβλητή είναι πίνακας;
Συγκέντρωσα τις διάφορες λύσεις παρακάτω και δημιούργησα ένα jsperf test.
2570
3
Η μέθοδος που δίνεται στο πρότυπο ECMAScript για την εύρεση της κλάσης του Object είναι η χρήση της μεθόδου
toString
από τοObject.prototype
.Ή θα μπορούσατε να χρησιμοποιήσετε την
typeof
για να ελέγξετε αν είναι String:Ή αν δεν σας ενδιαφέρει η απόδοση, μπορείτε απλά να κάνετε μια
concat
σε ένα νέο κενό Array.Υπάρχει επίσης ο κατασκευαστής, τον οποίο μπορείτε να ρωτήσετε απευθείας:
Δείτε μια διεξοδική επεξεργασία από το @T.J. Crowder's blog, όπως δημοσιεύτηκε στο σχόλιό του παρακάτω.
Ελέγξτε αυτό το benchmark για να πάρετε μια ιδέα για το ποια μέθοδος αποδίδει καλύτερα: http://jsben.ch/#/QgYAV
Από τον @Bharath μετατρέψτε συμβολοσειρά σε πίνακα χρησιμοποιώντας το Es6 για την ερώτηση που τέθηκε:
υποθέτουμε:
Θα ήθελα πρώτα να ελέγξω αν η υλοποίησή σας υποστηρίζει το
isArray
:Θα μπορούσατε επίσης να δοκιμάσετε να χρησιμοποιήσετε τον τελεστή
instanceof
.Αν τα μόνα δύο είδη τιμών που θα μπορούσαν να περάσουν σε αυτή τη συνάρτηση είναι ένα αλφαριθμητικό ή ένας πίνακας αλφαριθμητικών, κρατήστε το απλό και χρησιμοποιήστε έναν έλεγχο
typeof
για την πιθανότητα αλφαριθμητικού: