Bir dizinin boş olup olmadığını veya var olup olmadığını kontrol etmenin en iyi yolu nedir?
Bunun gibi bir şey mi?
if(array.length < 1 || array == undefined){
//empty
}
Önce undefined
için kontrol yapmak istersiniz. Tersini yaparsanız, dizi tanımsızsa bir hata üretecektir.
if (array === undefined || array.length == 0) {
// array empty or does not exist
}
Bu cevap oldukça ilgi görüyor, bu nedenle orijinal cevabımın, her şeyden çok, soruda değerlendirilen koşulların yanlış sırasını ele aldığını belirtmek isterim. Bu anlamda, null
değerleri, length
özelliğine sahip diğer nesne türleri vb. gibi çeşitli senaryoları ele almamaktadır. Ayrıca çok deyimsel bir JavaScript değildir.
Kusursuz yaklaşım
Yorumlardan biraz ilham alarak, şu anda bir dizinin boş olup olmadığını veya var olup olmadığını kontrol etmenin kusursuz bir yolu olduğunu düşündüğüm şey aşağıdadır. Ayrıca, değişkenin bir diziye değil, length
özelliğine sahip başka bir nesne türüne atıfta bulunabileceğini de dikkate alır.
if (!Array.isArray(array) || !array.length) {
// array does not exist, is not an array, or is empty
// ⇒ do not attempt to process array
}
Kırmak için:
Array.isArray()
, şaşırtıcı olmayan bir şekilde, argümanının bir dizi olup olmadığını kontrol eder. Bu, null
, undefined
gibi değerleri ve dizi olmayan diğer her şeyi ayıklar.
Bunun arguments
nesnesi ve DOM NodeList
nesneleri gibi dizi benzeri nesneleri de ortadan kaldıracağını unutmayın. Durumunuza bağlı olarak, bu istediğiniz davranış olmayabilir.
dizi.uzunlukkoşulu, değişkenin
uzunluközelliğinin bir [*doğru*](https://developer.mozilla.org/en/docs/Glossary/Truthy) değerine değerlendirilip değerlendirilmediğini kontrol eder. Önceki koşul zaten bir dizi ile uğraştığımızı ortaya koyduğu için,
array.length != 0veya
array.length !== 0` gibi daha katı karşılaştırmalar burada gerekli değildir.
Pragmatik yaklaşım Birçok durumda, yukarıdakiler aşırıya kaçmak gibi görünebilir. Belki TypeScript gibi derleme zamanında tür denetiminin çoğunu sizin için yapan daha yüksek dereceli bir dil kullanıyorsunuzdur ya da nesnenin gerçekten bir dizi mi yoksa sadece dizi benzeri mi olduğunu gerçekten önemsemiyorsunuzdur.
Bu durumlarda, aşağıdaki daha deyimsel JavaScript'i tercih etme eğilimindeyim:
if (!array || !array.length) {
// array or array.length are falsy
// ⇒ do not attempt to process array
}
Ya da, daha sık olarak, tersi:
if (array && array.length) {
// array and array.length are truthy
// ⇒ probably OK to process array
}