小编典典

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

all

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

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

阅读 84

收藏
2022-03-10

共1个答案

小编典典

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

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

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

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