我有一个这样的对象:
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。
obj2
、 obj3
和 obj4
至少拥有一个为真的值。有没有一个简单的解决方案来做到这一点?
最佳答案
作为单线:
!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/