检查空字符串数组

时间:2017-04-27 17:06:57

标签: javascript arrays

我试图像这样检查一个空字符串数组:

var array = ['',''];
//Other code
if (array == ['',''])
    //Do stuff

我发现了

['',''] == ['','']

返回false。这是为什么?我应该使用什么方法来检查空字符串数组?有没有办法让我不必检查每件物品?

6 个答案:

答案 0 :(得分:3)

除了建议使用Array#toString方法之外,我建议将Array#join与空字符串一起用作分隔符,然后测试结果。优点是,它适用于数组内任意数量的元素。

var bool = array.join('') ? 'not all empty string' : 'all empty string';

答案 1 :(得分:1)

['', ''] == ['', '']返回false因为JavaScript数组是对象,JavaScript中的对象具有引用语义。将对象彼此进行比较实际上会比较它们的参考ID,这对于不同的参考将是不同的。所以,即使==的双方都是"相同"数组,它们是不同的引用。

如果要检查数组是否只包含空字符串,请使用Array.prototype.every,如下所示:



myArray = ['']
console.log(myArray.every(el => el === '')) // true
myArray = []
console.log(myArray.every(el => el === '')) // true
myArray = ['test']
console.log(myArray.every(el => el === '')) // false




如果您所处的环境没有ES6支持,则可以将el => el === ''换成function(el) { return el === '' }

答案 2 :(得分:0)

你可以这样做:



var arr = ["","", ""].reduce(function (a, b) {
  return a + b;
});

if(arr == "") {
console.log('Array is empty');
}




答案 3 :(得分:0)

这也应该起作用:

var arr = [""];
console.log(String.valueOf(arr[0]) === String.valueOf(''));

答案 4 :(得分:0)

根据妮娜(Nina)的回答,这也应该有效!

 let arr1 = ['']
 const bool1 = !!arr1.join(''); // false
 console.log(bool1)
            
 let arr2 = ['String']
 const bool2 = !!arr2.join(''); // true
 console.log(bool2)

答案 5 :(得分:-1)

var bool = array.toString() === "," ? "all empty string" : "not all empty string";