在JavaScript中检查“undefined”上的数组项

时间:2012-02-18 21:42:18

标签: javascript arrays for-loop iteration undefined

我的JS代码有数组 arrayResults ,他的某些元素可以是“未定义的” - 这是算法的特征。要检查没有这样的元素,我使用以下代码:

for (i in arrayResults)
        {
          if (typeof(arrayResults[i])=='undefined')
           {
              // ask user to repeat
           };
        };  

但是,使用调试器,我发现JS引擎传递了“undefined”-item of array(in for condition),分别我没有可能进行比较并按照说明进行操作。

那么,有没有办法真正检查数组中的“未定义”项? (我不能按顺序设置数组项,因为如果我找到“未定义”项的位置,我告诉用户去这个位置)。

2 个答案:

答案 0 :(得分:8)

不要使用for..in循环来迭代数组。如果您对原因感兴趣,请阅读this StackOverflow question。它们只应用于遍历对象。

使用简单的oldschool for循环,它将解决您的问题。

for (var i = 0, l = arrayResults.length; i < l; i++) {
    if (typeof(arrayResults[i])=='undefined') {
         // ask user to repeat
    };
};  

jsFiddle Demo

答案 1 :(得分:4)

您可以在阵列上使用indexOf方法。

function hasUndefined(a) {
    return a.indexOf() !== -1;
}

hasUndefined([1,2,3, undefined, 5]);