如何检查JavaScript数组中的空字符串?

如何检查JavaScript数组中的空字符串?,javascript,arrays,Javascript,Arrays,我需要检查数组是否至少包含一个空元素。如果一个元素中的任何一个为空,那么它将返回false 例如: var my_arr = new Array(); my_arr[0] = ""; my_arr[1] = " hi "; my_arr[2] = ""; 第0个和第2个数组元素是“空的”。您可以使用一个简单的for循环通过数组进行检查,如下所示: function NoneEmpty(arr) { for(var i=0; i<arr.length; i++) { if(

我需要检查数组是否至少包含一个空元素。如果一个元素中的任何一个为空,那么它将返回false

例如:

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

第0个和第2个数组元素是“空的”。

您可以使用一个简单的
for
循环通过数组进行检查,如下所示:

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

但遗憾的是,IE在阵列上不支持此功能,至少目前还不支持。

您可以为此提供一个简单的帮助方法:

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);
函数hasEmptyValue(ary){
var l=三元长度,
i=0;
对于(i=0;i
编辑:检查是否存在
false
未定义的
NaN
null
0

编辑2:误读了正确/错误的预期


…弗雷德里克

你必须通过环路办理登机手续

function checkArray(my_arr){
   for(var i=0;i<my_arr.length;i++){
       if(my_arr[i] === "")   
          return false;
   }
   return true;
}
函数校验数组(my\u arr){
对于(var i=0;i您可以尝试函数:

return jQuery.inArray("", my_arr)

我在你的评论中看到,你给出的代码示例是PHP,所以我想知道你是否真的选择了PHP?在PHP中是:

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

  return false;
}
否则,如果您确实需要JavaScript,我会参考Nick Craver的答案,只要在循环中执行
len(my_arr[I])==0;
,检查字符串是否为空

function containsEmpty(a) {
    return [].concat(a).sort().reverse().pop() === "";
}
alert(containsEmpty(['1','','qwerty','100'])); // true
alert(containsEmpty(['1','2','qwerty','100'])); // false
var containsEmpty = !my_arr.some(function(e){return (!e || 0 === e.length);});
这将检查0、false、undefined“”和NaN。 它也是一个单行程序,适用于IE 9及更高版本。

使用like而不是循环有时可以实现更快、更安全、更可读的代码。在这里,您可以过滤数组以删除非空字符串的项,然后检查结果数组的长度

基本JavaScript

let emptyStrings = strArray.filter(str => str.trim().length <= 0);
var my_arr=[“”、“hi”、“”]
//仅保留空字符串的项目
新建阵列=我的阵列过滤器(功能(项目){
返回项==“”
})
//如果筛选数组不为空,则存在空字符串
控制台日志(新建);

console.log(new_arr.length==0);
检查字符串是否有空元素的单行解决方案

let emptyStrings = strArray.filter(str => str.trim().length <= 0);

let emptyStrings=strArray.filter(str=>str.trim().length str.trim().length用于一维数组

array.some(Boolean)
array.some(row => row.some(Boolean))
用于多维阵列

array.some(Boolean)
array.some(row => row.some(Boolean))

如果您只关心空字符串,则可以这样做:

const arr = ["hi","hello","","jj"]
('' in arr) //returns false

最后一行检查数组中是否找到空字符串。

我不知道这是否是最有效的方法,但ES2015+中有一行代码:

// true if not empty strings
// false if there are empty strings
my_arr.filter(x => x).length === my_arr.length
.filter(x=>x)
将返回数组中所有非空或未定义的元素。然后比较原始数组的长度。如果它们不同,则表示数组包含空字符串。

现在我们可以使用

返回一个布尔值

my_arr.includes("")
这返回了未定义的而不是布尔值,因此这里有一个选项

功能检查清空字符串(项目){
如果(item.trim().length>0)返回false;
否则返回true;
};
函数检查ArrayContainesEmptyString(阵列){
const containsEmptyString=array.some(checkEmptyString);
返回容器初始化;
};
log(检查ArrayContainesEmptyString([“”,“嘿”,“这个”,“是”,“我的”,“解决方案]))
//*返回true*
log(检查ArrayContainesEmptyString([“是”、“它”、“工作”]))
//*返回false*

加入数组,中间不要留任何空格,并检查其长度。如果长度大于零,则表示数组不是空的。如果长度小于或等于零,则表示数组是空的。

空是指
未定义的
还是空字符串?var my_arr=new array();my_arr[0]=“”;my_arr[1]=“嗨”;my_arr[2]=“”;这里第0个和第2个元素是空的。这是Java问题还是javascript问题?这些完全不相关。哦,现在它看起来像是带有所有$signs的PHP。下定决心……santanu,你刚才发布的代码是PHP。不是javascript。@santanu:我将你的代码转换为javascript并添加到你的问题中。包括jQuery for这似乎有点过火了,不是吗?@Nick Craver-是的,如果这是使用jQuery的唯一原因,那就过火了。另一方面,当使用jQuery时,这是一个很好的解决方案:-)@Vitalii-有时使用它,它仍然是少数,我的观点是你应该在一个没有标记jQuery的问题上限定这种类型的答案“如果你已经在使用jQuery…”一个新手稍后会发现这一点,并将jQuery包含在其中将是一件坏事。@Vitalii-我想你误解了,我指的是一个JS新手,而不是一个普通的。根据定义,他们不知道什么是最好的:)这不是与OP要求的相反吗(如果数组只有空元素,则返回true,如果任何元素为空,则返回false)?很好地调用数组的indexOf。现在让我们希望IE开发团队有人阅读并修复它!@Telemachus-很好,我错过了他明确的“哪个结果为false”要求,更新:)如果我们将
isEmpty
函数设为
hassempty
的第二个参数,
arr[i]=”不是更好吗"
implementation as default.FWIW,在我们放弃对它的支持之前它可能不会有多大作用,但这并不是问题的解决方案。虽然这段代码可能会解决这个问题,但如何以及为什么解决这个问题会真正有助于提高您的帖子质量,并可能导致更多的投票。请记住,您正在回答这个问题n对于未来的读者,而不仅仅是现在提问的人。请您的回答添加解释,并说明适用的限制和假设。