Περισσότερα
Ελέγξτε αν ο πίνακας είναι άδειος ή δεν υπάρχει. JS
Ποιος είναι ο καλύτερος τρόπος για να ελέγξετε αν ένας πίνακας είναι άδειος ή δεν υπάρχει;
Κάτι τέτοιο;
if(array.length < 1 || array == undefined){
//empty
}
316
1
Θέλετε να κάνετε πρώτα τον έλεγχο για "μη ορισμένο". Εάν το κάνετε αντίστροφα, θα δημιουργηθεί σφάλμα εάν ο πίνακας είναι απροσδιόριστος.
Update
Αυτή η απάντηση λαμβάνει αρκετή προσοχή, οπότε θα ήθελα να επισημάνω ότι η αρχική μου απάντηση, περισσότερο από οτιδήποτε άλλο, αφορούσε τη λάθος σειρά των συνθηκών που αξιολογούνται στην ερώτηση. Υπό αυτή την έννοια, δεν αντιμετωπίζει αρκετά σενάρια, όπως οι τιμές
null
, άλλοι τύποι αντικειμένων με ιδιότηταlength
, κλπ. Επίσης, δεν είναι πολύ ιδιωματική JavaScript.Η αλάνθαστη προσέγγιση Παίρνοντας κάποια έμπνευση από τα σχόλια, παρακάτω είναι αυτός που θεωρώ προς το παρόν ως τον αλάνθαστο τρόπο για να ελέγξετε αν ένας πίνακας είναι άδειος ή δεν υπάρχει. Λαμβάνει επίσης υπόψη ότι η μεταβλητή μπορεί να μην αναφέρεται σε έναν πίνακα, αλλά σε κάποιο άλλο τύπο αντικειμένου με ιδιότητα
length
.Για να το αναλύσουμε:
Η
Array.isArray()
, όπως είναι αναμενόμενο, ελέγχει αν το όρισμά της είναι πίνακας. Αυτό εξαλείφει τιμές όπωςnull
,undefined
και οτιδήποτε άλλο που δεν είναι πίνακας.Σημειώστε ότι αυτό θα εξαλείψει επίσης αντικείμενα που μοιάζουν με πίνακες, όπως το αντικείμενο
arguments
και τα αντικείμενα DOMNodeList
. Ανάλογα με την περίπτωσή σας, αυτή μπορεί να μην είναι η συμπεριφορά που επιθυμείτε.Η συνθήκη
array.length
ελέγχει αν η ιδιότηταlength
της μεταβλητής'αξιολογείται σε μια τιμή truthy. Επειδή η προηγούμενη συνθήκη έχει ήδη καθορίσει ότι όντως έχουμε να κάνουμε με έναν πίνακα, πιο αυστηρές συγκρίσεις όπωςarray.length != 0
ήarray.length !== 0
δεν απαιτούνται εδώ.Η ρεαλιστική προσέγγιση Σε πολλές περιπτώσεις, τα παραπάνω μπορεί να φαίνονται υπερβολικά. Ίσως χρησιμοποιείτε μια γλώσσα υψηλότερης τάξης όπως η TypeScript που κάνει το μεγαλύτερο μέρος του ελέγχου τύπου για εσάς κατά τη μεταγλώττιση, ή πραγματικά δεν σας ενδιαφέρει αν το αντικείμενο είναι πραγματικά ένας πίνακας, ή απλά σαν πίνακας.
Σε αυτές τις περιπτώσεις, τείνω να επιλέγω την ακόλουθη, πιο ιδιωματική JavaScript:
Ή, πιο συχνά, το αντίστροφό της: