2017-08-25 247 views
0

我似乎無法找到如何檢查對象屬性值是否爲false的解釋。我有這個代碼,我試圖檢查屬性'active'是否爲false,但只有typeof data[i].active ==='undefined部分工作。檢查對象屬性值是否爲

function createHTML(data) { 
var myTable = document.getElementById('list');  
for(var i=0; i<data.length; i++) { 
    var row = myTable.insertRow(); 
    for (var key in data[i]) {     
      var cell = row.insertCell();     
      if (data[i].hasOwnProperty(key)) {      
       cell.innerHTML = data[i][key];      
        if(typeof data[i].active === false || typeof 
         data[i].active ==='undefined') { 
         cell.innerHTML+= "<span class='eye'><i class='fa fa- 
         eye-slash'></i></span>";        
        } 
       } 
      } 
     } 

回答

1

使用邏輯不操作:

if (!data[i].active) { 
    // data[i].active is false, 0, undefined, null 
} 

返回FALSE如果單數不能被轉換爲true;否則,返回true。

0

nullundefined0''false評價爲內部if語句falsey值。

在你的情況,我們可以把您的問題以這樣的方式

data[i].active一個falsey價值?

以提高可讀性,您可以創建輔助功能:

function isActive(item) { return item && !!item.active; } 
function isNotActive(item) { return !isActive(item); } 

現在你可以改變你的代碼:如果您想查詢只爲

if(
    typeof data[i].active === false || 
    typeof data[i].active ==='undefined' 
) {} 

if(isNotActive(data[i])) {} 
0

,不是所有的虛假值像null,undefined,0等,然後用===(三等於)

所以,你的代碼變得

if(data[i].active === false) { 
    cell.innerHTML+= "<span class='eye'><i class='fa fa- 
    eye-slash'></i></span>";        
}