Проверка элемента массива на "undefined" в JavaScript - PullRequest
3 голосов
/ 19 февраля 2012

Мой JS-код имеет массив arrayResults , некоторые его элементы могут быть «неопределенными» - это особенность алгоритма. Чтобы проверить, что таких элементов нет, я использую следующий код:

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

Но, используя отладчик, я обнаружил, что JS-движок передает «неопределенный» -элемент массива (для условия), соответственно, у меня нет возможности сделать сравнение и выполнить следующие инструкции.

Итак, есть ли способ действительно проверить "неопределенные" элементы в массиве? (Я не могу установить элементы массива в последовательности, потому что, если я обнаружил позицию «неопределенного» элемента, я говорю пользователю перейти на эту позицию).

Ответы [ 2 ]

8 голосов
/ 19 февраля 2012

Не используйте цикл for..in для итерации массивов. Если вас интересуют причины, прочитайте этот вопрос StackOverflow . Их следует использовать только для перемещения по объектам.

Используйте вместо этого простой цикл oldschool for, он решит вашу проблему.

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

jsFiddle Demo

4 голосов
/ 12 августа 2015

Вы можете использовать indexOf метод для массива.

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

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