我有一个这样的对象:

var obj1 = {foo: false, bar: ''};
var obj2 = {foo: false, bar: '1'};
var obj3 = {foo: true,  bar: ''};
var obj4 = {foo: true,  bar: '1'};

我想要一个简单的函数来检查这些对象的所有值是否为假。在这个给定的例子中,只有 obj1 应该触发一个 false - 因为它们的所有值都是 false。 obj2obj3obj4 至少拥有一个为真的值。

有没有一个简单的解决方案来做到这一点?

最佳答案

作为单线:

!Object.keys(obj1).some(function(k) {return obj1[k];});
// Array.some returns true if any callback returns true
// You want true if all return false, aka if none return true
// So just negate Array.some

作为一种更具可读性的方法:
var ok = true, k;
for( k in obj1) if( obj1.hasOwnProperty(k)) {
    if( obj1[k]) {
        ok = false;
        break;
    }
}

关于javascript - 检查 Javascript 对象是否只包含假值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34788403/

10-11 22:05