2010-08-11 14 views
6

Dizinin en az bir boş öğe içerip içermediğini kontrol etmem gerekiyor. Bir elemanın herhangi biri boşsa, o zaman yanlış döner.Boş dizeler için JavaScript dizilerini nasıl kontrol edebilirim?

Örnek:

var my_arr = new Array(); 
my_arr[0] = ""; 
my_arr[1] = " hi "; 
my_arr[2] = ""; 

0. ve 2. dizi elemanları "boş" dir.

+0

Boş ile ne demek istiyorsun? – DuduAlul

+0

Boş olarak, 'undefined' veya boş dizeleri mi kastediyorsunuz? – Telemachus

+0

var my_arr = new Array(); my_arr [0] = ""; my_arr [1] = "hi"; my_arr [2] = ""; burada 0 ve 2. elemanlar boş – Santanu

cevap

6

Sen döngü içinde kontrol etmek zorunda ..fredrik

. Aslında PHP biri için gittiğini eğer sana vermek kod örneği PHP olduğunu soruya altında yorumlarınızı görmek

return jQuery.inArray("", my_arr) 
+0

, bu * sadece * biraz overkill görünüyor için jQuery dahil bir çok – Santanu

14

Böyle basit bir for ile dizide döngü tarafından kontrol edebilirsiniz:

function NoneEmpty(arr) { 
    for(var i=0; i<arr.length; i++) { 
    if(arr[i] === "") return false; 
    } 
    return true; 
} 

You can give it a try here, burada .indexOf() kullanmıyorsanız nedeni, aksi takdirde olurdu, IE desteği olmaması böyle daha da basit:

function NoneEmpty(arr) { 
    return arr.indexOf("") === -1; 
} 

Ama ne yazık ki, IE en azından henüz, diziler üzerinde bu işlevi desteklemez.

+0

Bu, OP'nin istediği şeyin tersi değil mi (herhangi bir öğe boşsa false döndürmek yerine dizi yalnızca boş öğeler içeriyorsa, true değerini döndürür)? – Telemachus

+0

Dizinin dizin için iyi çağrı. Şimdi sadece IE dev ekibinden birisinin bunu okuyacağını ve düzelteceğini umalım! jsfiddle bağlantı – fredrik

+0

1 @Telemachus - İyi yakalamak, ben şartının "sonuç yanlış olduğu" onun açık güncellenen :) cevapsız – satoru

3

Bunun için basit bir yardım yöntemi yapabilirdi:

function hasEmptyValues(ary) { 
    var l = ary.length, 
     i = 0; 

    for (i = 0; i < l; i += 1) { 
     if (!ary[i]) { 
      return false; 
     } 
    } 

    return true; 
} 

//check for empty 
var isEmpty = hasEmptyValues(myArray); 

EDIT: false, undefined, NaN, null, "" ve 0 Bu kontroller.

EDIT2: Doğru/yanlış beklenti yanlış.

+1

Ayrıca 'undefined' için de kontroller, değil mi? – Telemachus

+0

Evet, gerçekten üzerime düşeni. – fredrik

7

Sen jQuery.inArray() fonksiyonunu deneyebilirsiniz ? PHP, şöyle olabilir: aslında JavaScript gerek eğer

function hasEmpty($array) 
{ 
    foreach($array as $bit) 
    { 
    if(empty($bit)) return true; 
    } 

    return false; 
} 

Aksi takdirde, ben Nick Craver cevabı

+5

, düşünmek don'tcha sayesinde trick yapmış? –

+0

@Nick Craver - evet, jQuery'yi kullanmanın tek nedeni budur. jQuery kullanırken diğer yandan, bu – gnud

+0

:-) iyi bir çözümdür evet bu da yapacağız, teşekkürler – Santanu

1

, bu yüzden merak ediyorum:

function checkArray(my_arr){ 
    for(var i=0;i<my_arr.length;i++){ 
     if(my_arr[i] === "") 
      return false; 
    } 
    return true; 
} 
3
function containsEmpty(a) { 
    return [].concat(a).sort().reverse().pop() === ""; 
} 
alert(containsEmpty(['1','','qwerty','100'])); // true 
alert(containsEmpty(['1','2','qwerty','100'])); // false 
1

atıfta Sadece dize boş olup olmadığını kontrol etmek için bir döngü içinde bir len(my_arr[i]) == 0; yok.

0
var containsEmpty = !my_arr.some(function(e){return (!e || 0 === e.length);}); 

Bu, 0, false, undefined, "" ve NaN için kontrol eder. Aynı zamanda tek bir astar ve IE 9 ve üstü için çalışıyor.

İlgili konular