如何检查JavaScript数组是否包含空字符串?

18
我需要检查数组是否至少包含一个空元素。如果任何一个元素为空,则返回false。
例如:
var my_arr = new Array(); 
my_arr[0] = ""; 
my_arr[1] = " hi ";
my_arr[2] = "";
第0和第2个数组元素是“空的”。

你所说的“empty”是指“undefined”还是空字符串? - Telemachus
这是一个Java问题还是JavaScript问题?它们完全没有关联。哦,现在看起来像是PHP,有那么多的$符号。你得下定决心了... - Michael Borgwardt
2
Santanu,你刚刚发的那段代码是PHP,不是JavaScript。 - Johannes Jensen
2
@santanu:我把你的代码转换成了JavaScript并添加到了你的问题中。 - Andy E
@Michael:它始于$my_arr = array();。*array()在ECMAScript/JavaScript中未定义,除非您自己定义它。array()*是PHP数组的构造函数。 - Andy E
显示剩余3条评论
18个回答

1
在循环中执行 len(my_arr[i]) == 0; 来检查字符串是否为空。

1

你需要通过一些函数的数组进行检查。

如果isEmptyValue为真,那么意味着该数组有一个空字符串,否则没有。

const arr=['A','B','','D'];

const isEmptyValue = arr.some(item => item.trim() === '');

console.log(isEmptyValue)


0
如果您只关心空字符串,则可以使用以下代码:
const arr = ["hi","hello","","jj"]
('' in arr) //returns false

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


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)


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)会返回数组中所有非空和未定义的元素。然后您可以比较原始数组的长度。如果它们不同,那么这意味着该数组包含空字符串。


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

这个检查包括0、false、undefined、""和NaN。 它也是一行代码,适用于IE 9及以上版本。


0
const hasEmptyString = (arr) => arr.includes('');

-2

array.includes("") 可以正常工作。

让 a = ["content1", "" , "content2"]; console.log(a.includes(""));

//在控制台输出 true


1
此解决方案已经发布在以下链接中:https://dev59.com/z3A75IYBdhLWcg3wH1XP#63144056 - Eric Aya

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接