[英]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。
null
, undefined
, 0
, ''
, 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.