我需要检查数组是否包含至少一个空元素。如果任何一个元素为空,那么它将返回false。
示例:
var my_arr = new Array();
my_arr[0] = "";
my_arr[1] = " hi ";
my_arr[2] = "";
第0和第2个数组元素为“空”。
答案 0 :(得分:17)
您可以通过使用简单的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不支持这个函数在数组上,至少现在还没有。
答案 1 :(得分:10)
您必须通过循环办理登机手续。
function checkArray(my_arr){
for(var i=0;i<my_arr.length;i++){
if(my_arr[i] === "")
return false;
}
return true;
}
答案 2 :(得分:7)
您可以尝试jQuery.inArray()功能:
return jQuery.inArray("", my_arr)
答案 3 :(得分: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);
编辑:这会检查false
,undefined
,NaN
,null
,""
和0
。
EDIT2:误读了真/假的期望。
..弗雷德里克
答案 4 :(得分:3)
function containsEmpty(a) {
return [].concat(a).sort().reverse().pop() === "";
}
alert(containsEmpty(['1','','qwerty','100'])); // true
alert(containsEmpty(['1','2','qwerty','100'])); // false
答案 5 :(得分:1)
使用"higher order function"之类的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);
现代Javascript:单行
var my_arr = ["", "hi", ""]
var result = my_arr.filter(item => item === "").length === 0
console.log(result);
关于性能的说明
在这种情况下,循环可能会更快,因为一旦找到空字符串,您就可以停止循环。我可能仍然选择使用filter
来实现代码简洁性和可读性,但是任何一种策略都是可行的。
但是,如果您需要循环访问数组中的所有元素-也许要检查每个项目是否为空字符串-过滤器可能比for循环快得多!< / p>
答案 6 :(得分:1)
答案 7 :(得分:1)
对于一维数组
array.some(Boolean)
对于多维数组
array.some(row => row.some(Boolean))
答案 8 :(得分:1)
只需在循环中执行 len(my_arr[i]) == 0;
以检查字符串是否为空。
答案 9 :(得分:1)
我在你的评论中看到你提供的代码示例是PHP的问题,所以我想知道你是否真的要使用PHP?在PHP中它将是:
function hasEmpty($array)
{
foreach($array as $bit)
{
if(empty($bit)) return true;
}
return false;
}
否则如果您确实需要JavaScript,我会参考Nick Craver的回答
答案 10 :(得分:0)
var containsEmpty = !my_arr.some(function(e){return (!e || 0 === e.length);});
检查0,false,undefined,&#34;&#34;和NaN。 它也是一个单行,适用于IE 9及更高版本。
答案 11 :(得分:0)
一种解决方案,用于检查字符串是否包含空元素
let emptyStrings = strArray.filter(str => str.trim().length <= 0);
let strArray = ['str1', '', 'str2', ' ', 'str3', ' ']
let emptyStrings = strArray.filter(str => str.trim().length <= 0);
console.log(emptyStrings)
一种解决方案,可以从数组中获取非空字符串
let nonEmptyStrings = strArray.filter(str => str.trim().length > 0);
let strArray = ['str1', '', 'str2', ' ', 'str3', ' ']
let nonEmptyStrings = strArray.filter(str => str.trim().length > 0);
console.log(nonEmptyStrings)
答案 12 :(得分:0)
如果您只关心空字符串,则可以这样做:
const arr = ["hi","hello","","jj"]
('' in arr) //returns false
最后一行检查在数组中是否找到空字符串。
答案 13 :(得分:0)
我不知道这是否是最高效的方法,但这是ES2015 +中的一种方法:
// true if not empty strings
// false if there are empty strings
my_arr.filter(x => x).length === my_arr.length
.filter(x => x)
将返回数组中所有不为空或未定义的元素。然后,您比较原始数组的长度。如果它们不同,则意味着该数组包含空字符串。
答案 14 :(得分:0)
<img>
这返回了 undefined 而不是布尔值,因此这是一个替代。
my_arr.includes("")
答案 15 :(得分:0)
yourArray.join('').length > 0
加入数组,中间不要留任何空格,并检查其长度。如果长度大于零,则表示数组不为空。如果length小于或等于零,则数组为空。
答案 16 :(得分:-2)
array.includes("") 工作得很好。
让 a = ["content1", "", "content2"]; console.log(a.includes(""));
//控制台输出 真的