Ce's cel mai bun mod de a verifica daca o matrice este goală sau nu't există?
Ceva de genul asta?
if(array.length < 1 || array == undefined){
//empty
}
Vrei să facem verificarea pentru "nedefinit" în primul rând. Dacă faci invers, se va genera o eroare dacă matricea este nedefinit.
if (array === undefined || array.length == 0) {
// array empty or does not exist
}
Acest răspuns este obtinerea o cantitate de atenție, așa că am'd dori să subliniez faptul că originalul meu răspuns, mai mult decât orice altceva, a abordat greșit ordinea de condiții fiind evaluate în cauză. În acest sens, ea nu reușește să abordeze mai multe scenarii, cum ar fi null
valori, alte tipuri de obiecte cu o "lungime" de proprietate, etc. Este, de asemenea, nu foarte idiomatice JavaScript.
Cel mai simplu de abordare A lua niște inspirație de la comentarii, mai jos este ceea ce am în prezent, considerăm a fi cel mai simplu mod de a verifica dacă o matrice este goală sau nu există. De asemenea, ia în considerare faptul că variabila nu s-ar putea referi la o serie, dar la un alt tip de obiect cu o "lungime" de proprietate.
if (!Array.isArray(array) || !array.length) {
// array does not exist, is not an array, or is empty
// ⇒ do not attempt to process array
}
Să-l rupe în jos:
Array.isArray()
, cum era de așteptat, verifică dacă argumentul este o matrice. Acest buruienile valori ca null
, "nedefinit" și orice altceva care nu este o matrice.
Rețineți că acest lucru va elimina, de asemenea, matrice-ca obiecte, cum ar fi argumente
obiect și DOM NodeList
obiecte. În funcție de situația dumneavoastră, acest lucru nu ar putea fi comportamentul pe care're după.
Anii matrice.lungime starea verifică dacă variabila's "lungime" de proprietate se evaluează la un [*sinceră*](https://developer.mozilla.org/en/docs/Glossary/Truthy) valoare. Pentru că starea anterioară stabilit deja că suntem într-adevăr de-a face cu o matrice, mai stricte comparații ca matrice.length != 0 " sau " matrice.lungime !== 0
nu sunt necesare aici.
Abordarea pragmatică Într-o mulțime de cazuri, cele de mai sus ar putea parea exagerat. Poate te're folosind un ordin superior limbaj Script care face cele mai multe de tip verificare la compilare-timp, sau chiar nu't pasă dacă obiectul este de fapt o matrice, sau doar array-ca.
În aceste cazuri, am tendința de a merge pentru următoarele, mai idiomatice JavaScript:
if (!array || !array.length) {
// array or array.length are falsy
// ⇒ do not attempt to process array
}
Sau, mai frecvent, sale inverse:
if (array && array.length) {
// array and array.length are truthy
// ⇒ probably OK to process array
}