Цикл For-in не работает с неопределенными элементами в объекте

0

Я хочу использовать цикл for-in, чтобы проверить, не определены ли элементы в объекте. Однако цикл будет выполняться только в том случае, если уже есть значения, хранящиеся в объекте.

Вот пример того, как я помещаю значения в объект:

<div>
  <input type="radio" name="" id="" ng-model="user.fac_staff" value="">
  <input type="radio" name="" id="" ng-model="user.fac_staff" value="">
  <input type="radio" name="" id="" ng-model="user.fac_staff" value="">
</div>

<div>
  <select class="" id="" name="" ng-options="ng repeat stuff" data-ng-model="user.college">
    <option value="">Stuff</option>
  </select>
</div>

<div>
  <input type="radio" name="" id="" ng-model="user.source" value="">
  <input type="radio" name="" id="" ng-model="user.source" value="">
  <input type="radio" name="" id="" ng-model="user.source" value="">
</div>

<input type="text" class="" name="" id="" data-ng-model="user.name_awarding_agency">

<button type="submit" ng-click="ajs_function(user)">Click</button>

Вот пример того, что я пытаюсь сделать в контроллере:

$scope.ajs_function = function(userObj) {

    for(var key in userObj) {
        if(userObj[key] == "undefined")
            //do stuff
    }
}

Цикл не запускается вообще. Я попытался отобразить значения ключей на консоли, и когда это не сработало, я попытался отобразить значение счетчика для консоли, чтобы убедиться, что он вообще что-то делает. Я должен также упомянуть, что у меня есть аналогичный цикл for-in в функции, проходящей через один и тот же объект, однако этот цикл работает только тогда, когда уже есть данные.

Теги:
for-in-loop

1 ответ

0

Попробуйте это вместо этого:

for(var key in userObj) {
    if(typeof userObj[key] === "undefined")
        //do stuff
}

Вы проверяли, было ли значение свойства объекта равным строковому литералу "undefined". Вы должны проверить, не указан ли тип свойства объекта.

Обнаружение свойства неопределенного объекта

  • 0
    Я действительно попробовал это прежде, чем спросить, и у меня не было другого результата. Правильно ли это делать?
  • 0
    Какой результат вы получаете? Конечно, использование typeof - это то, что нужно, но там могут происходить и другие вещи, вызывающие проблемы.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню