Javascript:分离未定义的数组定义值和未定义的数组值

时间:2012-05-14 10:13:14

标签: javascript undefined

我现在如何检查该值是否定义为未定义,或者是否确实未定义? 例如。

var a = [];
a[0] = undefined;

// a defined value that's undefined
typeof a[0] === "undefined";

// and a value that hasn't been defined at all
typeof a[1] === "undefined";

有没有办法将这两者分开?它可能会使用for-in循环来完成数组,但是有更轻松的方法吗?

2 个答案:

答案 0 :(得分:3)

您可以检查索引是否在给定数组中:

0 in a // => true
1 in a // => false

答案 1 :(得分:2)

您可以使用in运算符检查数组中是否存在给定索引,而不管其实际值是什么

var t = [];
t[0] = undefined;
t[5] = "bar";

console.log( 0 in t ); // true
console.log( 5 in t ); // true
console.log( 1 in t ); // false
console.log( 6 in t ); // false

if( 0 in t && t[0] === undefined ) {
     // the value is defined as "undefined"
}

if( !(1 in t) ) {
    // the value is not defined at all
}