我需要检查数组是否包含至少一个空元素.如果任何一个元素为空,则返回false.
例:
var my_arr = new Array();
my_arr[0] = "";
my_arr[1] = " hi ";
my_arr[2] = "";
Run Code Online (Sandbox Code Playgroud)
第0和第2个数组元素为"空".
Nic*_*ver 17
您可以通过简单循环遍历数组进行检查for,如下所示:
function NoneEmpty(arr) {
for(var i=0; i<arr.length; i++) {
if(arr[i] === "") return false;
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
你可以在这里尝试一下,我们.indexOf()这里没有使用的原因是IE中缺乏支持,否则它会更简单:
function NoneEmpty(arr) {
return arr.indexOf("") === -1;
}
Run Code Online (Sandbox Code Playgroud)
但唉,IE不支持数组上的这个功能,至少现在还没有.
Azh*_*har 10
你必须通过循环检查.
function checkArray(my_arr){
for(var i=0;i<my_arr.length;i++){
if(my_arr[i] === "")
return false;
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
你可以尝试jQuery.inArray()函数:
return jQuery.inArray("", my_arr)
Run Code Online (Sandbox Code Playgroud)
使用“高阶函数”(例如filter代替循环)有时可以使代码更快、更安全、更易读。在这里,您可以过滤数组以删除不是空字符串的项目,然后检查结果数组的长度。
基本 JavaScript
var my_arr = ["", "hi", ""]
// only keep items that are the empty string
new_arr = my_arr.filter(function(item) {
return item === ""
})
// if filtered array is not empty, there are empty strings
console.log(new_arr);
console.log(new_arr.length === 0);Run Code Online (Sandbox Code Playgroud)
现代 Javascript:单行代码
var my_arr = ["", "hi", ""]
var result = my_arr.filter(item => item === "").length === 0
console.log(result);Run Code Online (Sandbox Code Playgroud)
关于性能的说明
在这种情况下,循环可能会更快,因为一旦找到空字符串就可以停止循环。为了代码简洁性和可读性,我可能仍然选择使用filter,但是这两种策略都是合理的。
然而,如果您需要循环遍历数组中的所有元素(也许是为了检查每个项目是否为空字符串),过滤器可能会比 for 循环快得多!