这是否适用于测试位置的值是否index
存在,或者是否有更好的方法:
if(arrayName[index]==""){
// do stuff
}
这是否适用于测试位置的值是否index
存在,或者是否有更好的方法:
if(arrayName[index]==""){
// do stuff
}
从概念上讲,JavaScript 中的数组包含array.length
元素,从array[0]
直到array[array.length - 1]
. 具有索引的数组元素i
被定义为所述阵列的一部分,如果i
是间0
和array.length - 1
包容。如果 i 不在此范围内,则它不在数组中。
因此,从概念上讲,数组是线性的,从零开始到最大值,没有任何机制可以在不存在条目的范围内产生“间隙”。要找出给定位置索引处是否存在值(其中索引为 0 或正整数),您实际上只需使用
if (i >= 0 && i < array.length) {
// it is in array
}
现在,在幕后,JavaScript 引擎几乎肯定不会像这样线性和连续地分配数组空间,因为它在动态语言中没有多大意义,并且对于某些代码来说效率低下。它们可能是哈希表或某种混合策略,并且未定义的数组范围可能没有分配到自己的内存。尽管如此,JavaScript 语言希望将array.length
n 的数组呈现为具有n 个成员,并且它们被命名为0到n - 1,并且此范围内的任何内容都是数组的一部分。
然而,您可能想要的是知道数组中的值是否实际上是已定义的——也就是说,它不是undefined
. 也许您甚至想知道它是否已定义而不是null
. 可以在不设置成员值的情况下向数组添加成员:例如,如果您通过增加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
}
仅使用.length
是不安全的,并且会在某些浏览器中导致错误。这是一个更好的解决方案:
if(array && array.length){
// not empty
} else {
// empty
}
或者,我们可以使用:
Object.keys(__array__).length
if(!arrayName[index]){
// do stuff
}
if(arrayName.length > index && arrayName[index] !== null) {
//arrayName[index] has a value
}