繁体   English   中英

检查对象属性值是否为false

[英]Check if object property value is false

我似乎找不到有关如何检查对象中的属性值是否为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>";                             
                    } 
                }
            }  
        }

使用逻辑非运算符:

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

如果其单个操作数不能转换为true,则返回false;否则,返回false。 否则,返回true。

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]))  {}

如果您只想检查false ,而不是所有虚假的值(例如null,undefined,0等),请使用===(三倍等于)

所以你的代码变成

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM