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

Kyl*_*ger 13 javascript

题:

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

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

var ob = {  stack: true, 
            overflow: true, 
            website: true 
         };
Run Code Online (Sandbox Code Playgroud)

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

Object.keys(ob).length // returns 3
Run Code Online (Sandbox Code Playgroud)

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


解:

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

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

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

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

tym*_*eJV 17

您可以使用以下Array.some方法:

var hasFalseKeys = Object.keys(ob).some(k => !ob[k]);
Run Code Online (Sandbox Code Playgroud)

  • @Kyle.Belanger - 您可以使用上面相同的逻辑,只是相反。或者使用 `every` - `var allFalseKeys = Object.keys(ob).every(k => !ob[k]);` (2认同)

Man*_*tha 9

这是我将如何做到的:

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

// OR

Object.values(ob).indexOf(false) >= 0;  // Before ECMAScript 7
Run Code Online (Sandbox Code Playgroud)