2015-09-23 20 views
0

我想使用for-in循環來檢查對象中的項目是否未定義。但是,只有當對象中已存儲值時,循環纔會運行。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循環,但該循環僅在已有數據時才運行。

回答

0

試試這個:

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

正在測試,如果對象屬性的值等於字符串「不確定」。您應該測試對象屬性的類型是否未定義。

Detecting an undefined object property

+0

我實際上在試過之前試過,並沒有得到不同的結果。這是爲了正確的做法嗎? –

+0

你會得到什麼結果?當然,使用'typeof'是正確的做法,但你也可能在其中發生其他事情,導致問題。 –

+0

我完全沒有結果。就我所知,該循環甚至不會遍歷該對象。另外,我確定typeof是正確的方法,因爲我已經看到它在許多其他來源中使用,但我不確定它爲什麼不適合我。但是,除了for-in循環之外還有別的方法可以做得更好,或者只是一種替代方法,也許呢? –

相關問題