我的JS代码有数组 arrayResults ,他的某些元素可以是“未定义的” - 这是算法的特征。要检查没有这样的元素,我使用以下代码:
for (i in arrayResults)
{
if (typeof(arrayResults[i])=='undefined')
{
// ask user to repeat
};
};
但是,使用调试器,我发现JS引擎传递了“undefined”-item of array(in for condition),分别我没有可能进行比较并按照说明进行操作。
那么,有没有办法真正检查数组中的“未定义”项? (我不能按顺序设置数组项,因为如果我找到“未定义”项的位置,我告诉用户去这个位置)。
答案 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
};
};
答案 1 :(得分:4)
您可以在阵列上使用indexOf
方法。
function hasUndefined(a) {
return a.indexOf() !== -1;
}
hasUndefined([1,2,3, undefined, 5]);