这将用于测试一个值在位置索引是否存在,或者有更好的方法:
if(arrayName[index]==""){
// do stuff
}
这将用于测试一个值在位置索引是否存在,或者有更好的方法:
if(arrayName[index]==""){
// do stuff
}
当前回答
这取决于你对“空”的定义。
当您试图获取一个对象的属性值时,该对象没有该名称的属性,您将获得该值为undefined。
这就是稀疏数组的情况:不是所有的索引都在0和数组之间。长度为1的存在。
所以你可以检查array[index] === undefined。
但是,属性索引可能存在一个未定义的值。如果你想过滤掉这种情况,你可以使用in操作符或hasOwnProperty,如如何检查一个对象在JavaScript中是否有属性所述?
index in array;
array.hasOwnProperty(index);
如果你想要考虑一个具有未定义或空值的现有属性不存在,你可以使用松散比较数组[index] == undefined或数组[index] == null。
如果你知道数组不是稀疏的,你可以比较index和array.length。但为了安全起见,您可能希望确保index确实是数组索引,请参阅检查属性名称是否为数组索引
其他回答
我建议创建一个这样的函数:
function isEmptyEl(array, i) {
return !(array[i]);
}
你可以这样称呼它:
if (isEmptyEl(arrayName, indexVal)) {
console.log('arrayName[' + indexVal + '] is empty');
}
强制开发人员使用isemptyl接口将捕获输入错误,例如未定义的arrayName或indexVal变量。
(在使用Javascript编程时,防御性编程通常是一个很好的实践。)
如果没有定义arrayName,就会抛出这样的错误:
Uncaught ReferenceError: arrayName is not defined
at <anonymous>:2:15
at Object.InjectedScript._evaluateOn (<anonymous>:895:140)
at Object.InjectedScript._evaluateAndWrap (<anonymous>:828:34)
at Object.InjectedScript.evaluate (<anonymous>:694:21)
未定义的indexVal也有类似的结果。
如果数组或索引值不存在,就会得到一个错误。
对于有效的输入,如果arrayName[indexVal]是以下任意一个,你只会得到一个true:
零 未定义的 南 空字符串 0 假
if(!arrayName[index]){
// do stuff
}
仅使用.length是不安全的,在某些浏览器中会导致错误。这里有一个更好的解决方案:
if(array && array.length){
// not empty
} else {
// empty
}
或者,我们可以用:
Object.keys(__array__).length
这取决于你对“空”的定义。
当您试图获取一个对象的属性值时,该对象没有该名称的属性,您将获得该值为undefined。
这就是稀疏数组的情况:不是所有的索引都在0和数组之间。长度为1的存在。
所以你可以检查array[index] === undefined。
但是,属性索引可能存在一个未定义的值。如果你想过滤掉这种情况,你可以使用in操作符或hasOwnProperty,如如何检查一个对象在JavaScript中是否有属性所述?
index in array;
array.hasOwnProperty(index);
如果你想要考虑一个具有未定义或空值的现有属性不存在,你可以使用松散比较数组[index] == undefined或数组[index] == null。
如果你知道数组不是稀疏的,你可以比较index和array.length。但为了安全起见,您可能希望确保index确实是数组索引,请参阅检查属性名称是否为数组索引
好的,让我们先看看如果JavaScript中不存在数组值会发生什么,所以如果我们有一个如下所示的数组:
const arr = [1, 2, 3, 4, 5];
现在我们检查6是否在下标5处:
arr[5];
我们得到 未定义……
这基本上给了我们答案,检查是否未定义的最好方法,像这样:
if("undefined" === typeof arrayName[index]) {
//array value is not there...
}
在这种情况下最好不要这样做:
if(!arrayName[index]) {
//Don't check like this..
}
因为假设我们有这样一个数组:
const arr = [0, 1, 2];
我们这样做:
if(!arr[0]) {
//This get passed, because in JavaScript 0 is falsy
}
正如你所看到的,即使0在那里,它也不会被识别,还有一些其他的事情可以做同样的事情,让你的应用程序有bug,所以要小心,我把它们都列了下来:
Undefined:如果该值没有定义并且是未定义的 null:如果它是空的,例如如果一个DOM元素不存在… 空字符串:" 0:数字0 南:不是数字 假