2012-05-14 3 views
4

Как проверить, определено ли значение как неопределенное, или если оно действительно не определено?
например.Javascript: заданное значение разделительного массива, которое не определено, и значение массива, которое не определено

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

Undefined означает, что он не определен - если вы явно установили что-то неопределенное, это также не определено по определению. Вы можете использовать null, проверить индекс на длину массива и т. Д. –

+0

True. Я упростил свою реальную проблему, чтобы вопрос приобрел больше смысла. Массив - это действительно коллекция из данных, где undefined - допустимое значение, которое говорит мне, что что-то не определено. Проблемы, похоже, возникают, когда массив [undefined], и это заставило меня задуматься о теме вопроса ... – Marcus

ответ

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 
} 
+0

тот же ответ, что и у меня, но с небольшим количеством объяснений :) – malko

+0

Я этого не видел, мы разместили в то же время :) – pomeh

3

вы можете проверить, если индекс в данном массиве:

0 in a // => true 
1 in a // => false 
Смежные вопросы