2010-08-11 73 views
6

我需要檢查數組是否至少包含一個空元素。如果任何一個元素爲空,那麼它將返回false。如何檢查JavaScript數組中的空字符串?

實施例:

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

第0和第二數組元素是 「空」。

+0

你什麼意思是空的? – DuduAlul 2010-08-11 11:34:43

+0

空你的意思是「未定義」或空字符串? – Telemachus 2010-08-11 11:35:14

+0

var my_arr = new Array(); my_arr [0] =「」; my_arr [1] =「hi」; my_arr [2] =「」; 這裏第0個和第2個元素是空的 – Santanu 2010-08-11 11:36:07

回答

6

您必須通過循環檢查。

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

完成了這個伎倆,非常感謝 – Santanu 2010-08-11 11:53:40

14

您可以通過數組循環用一個簡單的for,像這樣的檢查:

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,我們不使用.indexOf()這裏的原因是缺乏支持IE,否則它會是更簡單的是這樣的:

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

但很可惜,IE不支持此功能的陣列,至少目前還沒有。

+0

這不是OP所要求的相反(如果數組只有空元素,則返回true,而不是在任何元素爲空時返回false)? – Telemachus 2010-08-11 11:44:42

+0

針對數組的indexOf的良好調用。現在讓我們希望來自IE開發團隊的人閱讀並修復它! – fredrik 2010-08-11 11:46:22

+0

+1爲jsfiddle鏈接 – satoru 2010-08-11 11:47:33

3

你可以爲這個做一個簡單的幫助方法:

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); 

編輯:此檢查falseundefinedNaNnull""0

編輯2:誤讀真假預期。

..fredrik

+1

也檢查'undefined',對吧? – Telemachus 2010-08-11 11:54:20

+0

是的,我錯過了。 – fredrik 2010-08-11 11:58:08

7

您可以嘗試jQuery.inArray()功能:

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

包括這個jQuery似乎*只是*有點矯枉過正,不要以爲? – 2010-08-11 11:44:05

+0

@Nick Craver - 是的,如果這是使用jQuery的唯一原因,那麼矯枉過正。另一方面,當使用jQuery時,這是一個很好的解決方案:-) – gnud 2010-08-11 11:50:38

+0

是的,這也將做,謝謝 – Santanu 2010-08-11 11:57:29

1

我的問題是你給的代碼示例是PHP下您的意見看,所以我在想,如果你實際去爲PHP一個?在PHP這將是:

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

    return false; 
} 

否則,如果你確實確實需要JavaScript的,我指的是尼克Craver的回答

3
function containsEmpty(a) { 
    return [].concat(a).sort().reverse().pop() === ""; 
} 
alert(containsEmpty(['1','','qwerty','100'])); // true 
alert(containsEmpty(['1','2','qwerty','100'])); // false 
1

只是做一個len(my_arr[i]) == 0;一個循環中,以檢查是否字符串爲空。

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

這會檢查0,false,undefined,「」和NaN。 它也是一個單線程,適用於IE 9及更高版本。

相關問題