如果某个数组索引中存在值,如何检查JavaScript?
2022-08-29 23:01:54
这是否适用于测试位置处的值是否存在,或者是否有更好的方法:index
if(arrayName[index]==""){
// do stuff
}
这是否适用于测试位置处的值是否存在,或者是否有更好的方法:index
if(arrayName[index]==""){
// do stuff
}
从概念上讲,JavaScript 中的数组包含元素,从 开始到 。具有索引的数组元素被定义为数组的一部分(如果介于 和包含之间)。如果 i 不在此范围内,则不在数组中。array.length
array[0]
array[array.length - 1]
i
i
0
array.length - 1
因此,从概念上讲,数组是线性的,从零开始到最大值,没有任何机制可以在不存在条目的范围内具有“间隙”。要找出给定位置索引处是否存在值(其中索引为0或正整数),您只需使用
if (i >= 0 && i < array.length) {
// it is in array
}
现在,在引擎盖下,JavaScript引擎几乎肯定不会像这样线性和连续地分配数组空间,因为它在动态语言中没有多大意义,并且对于某些代码来说效率低下。它们可能是哈希表或策略的混合混合,数组的未定义范围可能没有分配自己的内存。尽管如此,JavaScript语言希望将n的数组表示为具有n个成员,并且它们被命名为0到n - 1,并且此范围内的任何内容都是数组的一部分。array.length
但是,您可能想要的是知道数组中的值是否实际上是定义的东西 - 也就是说,它不是 。也许你甚至想知道它是否被定义而不是空
。可以在不设置成员值的情况下向数组添加成员:例如,如果通过增加属性来添加数组值,则任何新值都将是 。undefined
array.length
undefined
确定给定值是有意义的值,还是已定义。也就是说,不是 或 :undefined
null
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
}
难道我们不能这样做吗:
if(arrayName.length > 0){
//or **if(arrayName.length)**
//this array is not empty
}else{
//this array is empty
}