检查对象中的任何键值是否为false

时间:2016-11-15 14:25:12

标签: javascript

问题:

我正在寻找一个简单的解决方案,以检查对象中的任何键值是否为false

我有一个带有几个唯一键的对象,但是,它们只包含布尔值(truefalse

var ob = {  stack: true, 
            overflow: true, 
            website: true 
         };

我知道我可以使用以下行获取对象中的键数:

Object.keys(ob).length // returns 3

是否有内置方法来检查是否有任何键值为false而不必遍历对象中的每个键?

解决方案:

要检查是否任何键 - 请使用Array.prototype.some()

// to check any keys are false
Object.keys(ob).some(k => !ob[k]); // returns false

要检查所有键是否使用Array.prototype.every()

// to check if all keys are false 
Object.keys(ob).every(k => !ob[k]); // returns false 

4 个答案:

答案 0 :(得分:14)

您可以使用Array.some方法:

var hasFalseKeys = Object.keys(ob).some(k => !ob[k]);

答案 1 :(得分:2)

这是我要这样做的方式:

Object.values(ob).includes(false);      // ECMAScript 7

// OR

Object.values(ob).indexOf(false) >= 0;  // Before ECMAScript 7

答案 2 :(得分:0)

您可以创建一个函数isAnyKeyValueFalse,在您的应用程序中重用它,使用Array#find()返回数组中第一个满足提供的测试函数的元素。

如果没有对象属性为false,则返回false,如果有任何属性为false,则返回true。

代码:

var ob = {
  stack: true,
  overflow: true,
  website: true
};

function isAnyKeyValueFalse(obj) {
  return Object.keys(obj).find(key => !obj[key]) ? true : false;
}

console.log(isAnyKeyValueFalse(ob));

答案 3 :(得分:0)

要检查所有值是否为假

Object.values(ob).every(v => !v); 

enter image description here