我似乎无法找到如何检查对象中的属性值是否为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>";
}
}
}
}
答案 0 :(得分:1)
使用逻辑非运算符:
if (!data[i].active) {
// data[i].active is false, 0, undefined, null
}
如果单个操作数不能转换为true,则返回false;否则,返回true。
答案 1 :(得分:1)
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])) {}
答案 2 :(得分:0)
如果你只想检查 false ,而不是所有的虚假值,如null,undefined,0等,那么使用 ===(triple equals)。
所以你的代码变成了
if(data[i].active === false) {
cell.innerHTML+= "<span class='eye'><i class='fa fa-
eye-slash'></i></span>";
}