如果某个数组索引中存在值,如何检查JavaScript?

2022-08-29 23:01:54

这是否适用于测试位置处的值是否存在,或者是否有更好的方法:index

if(arrayName[index]==""){
     // do stuff
}

答案 1

从概念上讲,JavaScript 中的数组包含元素,从 开始到 。具有索引的数组元素被定义为数组的一部分(如果介于 和包含之间)。如果 i 不在此范围内,则不在数组中。array.lengtharray[0]array[array.length - 1]ii0array.length - 1

因此,从概念上讲,数组是线性的,从零开始到最大值,没有任何机制可以在不存在条目的范围内具有“间隙”。要找出给定位置索引处是否存在值(其中索引为0或正整数),您只需使用

if (i >= 0 && i < array.length) {
  // it is in array
}

现在,在引擎盖下,JavaScript引擎几乎肯定不会像这样线性和连续地分配数组空间,因为它在动态语言中没有多大意义,并且对于某些代码来说效率低下。它们可能是哈希表或策略的混合混合,数组的未定义范围可能没有分配自己的内存。尽管如此,JavaScript语言希望将n的数组表示为具有n个成员,并且它们被命名为0n - 1,并且此范围内的任何内容都是数组的一部分。array.length

但是,您可能想要的是知道数组中的值是否实际上是定义的东西 - 也就是说,它不是 。也许你甚至想知道它是否被定义而不是。可以在不设置成员值的情况下向数组添加成员:例如,如果通过增加属性来添加数组值,则任何新值都将是 。undefinedarray.lengthundefined

确定给定值是有意义的值,还是已定义。也就是说,不是 或 :undefinednull

if (typeof array[index] !== 'undefined') {

if (typeof array[index] !== 'undefined' && array[index] !== null) {

有趣的是,由于JavaScript的比较规则,我的最后一个例子可以优化如下:

if (array[index] != null) {
  // The == and != operators consider null equal to only null or undefined
}  

答案 2

难道我们不能这样做吗:

if(arrayName.length > 0){   
    //or **if(arrayName.length)**
    //this array is not empty 
}else{
   //this array is empty
}