2010-08-11 48 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及更高版本。