Javascript Array.every()检查值是否为false

Javascript Array.every()检查值是否为false,javascript,Javascript,我有这样一个数组: myArray = {firstValue: false, secondValue: false, thirdValue: true, forthValue: false}; 我想检查每个值是否都是假的,如果是,请做些什么。 例如: myArray.every(x => x==false) //do something 这是正确的方法吗?或者需要先传递一个函数?。它不是数组,而是对象 如果要检查所有值是否为false,可以通过获取密钥,然后在该数组上使

我有这样一个数组:

   myArray = {firstValue: false, secondValue: false, thirdValue: true, forthValue: false};
我想检查每个值是否都是假的,如果是,请做些什么。 例如:

  myArray.every(x => x==false)
  //do something

这是正确的方法吗?或者需要先传递一个函数?

。它不是数组,而是对象

如果要检查所有值是否为
false
,可以通过获取密钥,然后在该数组上使用

const obj={firstValue:false,secondValue:false,thirdValue:true,forthValue:false};
const allFalse=Object.keys(obj).every(key=>obj[key]==false);

console.log(allFalse)你没有数组,你有一个对象

可以使用Object.values()创建要迭代的值数组

Object.values(myArray).every(x => x===false)
注意:如果在传统浏览器中使用,则需要polyfill,我会:

 !Object.values(myArray /*?*/).reduce((a,b) => a || b);
除了使用之外,您还可以使用并通过使用作为回调来获取它的值

if (!Object.values(myObject).some(Boolean)) {
    //...
}

您正在传递一个函数。。。不过,您可能需要使用
=
。您的数组实际上是
对象
而不是
数组
。你不能在对象上使用
.each()
。使用
对象.值
不是更好吗?我想你的意思是“如果所有值都
为false
”@Andy也会加上这一点。幸运的是,你失去了
.each
的短路优势。有些
。嗯。。。我对此表示怀疑。当我在Firefox中重新运行测试时,结果会前后翻转。从逻辑上讲,短路版本应该更快,但这永远不能保证。无论如何,在短剧中,这肯定不会产生明显的区别。在大范围内,我肯定想早点停下来。无论这是否更快,
。每一个()
看起来都更清晰,IMHO。似乎有很多程序员认为
。reduce()
是正确的答案,只要你能找到一种使用它的方法。我已经编写了很长时间的程序,对函数式编程有很好的掌握,但我仍然需要努力思考,以理解人们试图使用
。reduce()的一些方法
进入到他们的解决方案中。@barmar是这样的。但我认为这是一个罕见的用例。这也是一个好方法,尽管自从
使用箭头函数以来,使用内置的
布尔值变得不那么吸引人。一些(b=>b)
更短,并且具有相同的结果。