Javascript 如果数组的所有值都为真,如何返回真,否则返回假?

Javascript 如果数组的所有值都为真,如何返回真,否则返回假?,javascript,jquery,arrays,Javascript,Jquery,Arrays,我有这样一个数组: var arr = [ true, true, true ]; 现在我想得到true,因为上面数组的所有键都是true 另一个例子: var arr = [ true, false, true ]; 现在我需要得到false,因为数组中有一个false 我该怎么做呢?最短的代码是arr.every(x=>x)或arr.every(函数(x){return x}),用于ES5兼容性 该方法将返回true或false的function对象作为参数,用于测试数组的每个元素。我同

我有这样一个数组:

var arr = [ true, true, true ];
现在我想得到
true
,因为上面数组的所有键都是
true

另一个例子:

var arr = [ true, false, true ];
现在我需要得到
false
,因为数组中有一个
false


我该怎么做呢?

最短的代码是
arr.every(x=>x)
arr.every(函数(x){return x})
,用于ES5兼容性

该方法将返回true或false的function对象作为参数,用于测试数组的每个元素。

我同意这是一个很好的答案,但如果数组中有许多元素,您也可以使用它,并且速度会更快,因为当发现第一个false时,该函数将立即停止。例如:

var arr = [ true, false, true ];
var arr=[真,真,真,真,真,真];
var allTrue=!arr.some(x=>x==false);
console.log(allTrue);
var arr=[假,真,真,真,真,真];
var notAllTrue=!arr.some(x=>x==false);

console.log(notAllTrue)我也喜欢使用以下技巧来解决问题:

const arr=[true,true,true];
const allTrue=(arr.filter(布尔).length==arr.length);
console.log(allTrue);
filter()中的表达式将只过滤真值,然后我们将过滤数组的长度与原始数组进行比较,以检查是否全部为真。

如何:

!arr.includes(false)
由于它在第一次
false
之后停止,因此可读性更强,速度更快。在行动中看到它:

让arr=[true,true,true]
console.log(!arr.includes(false))
arr=[对,错,对]

console.log(!arr.includes(false))
我是否需要编写
true
而不是
x
?不需要,只写x。但是您也可以编写
arr.every(x=>x==true)
您的代码有以下错误:未捕获的语法错误:意外标记=>Yes。它通常取决于浏览器。大多数现代浏览器都支持箭头函数。@这取决于浏览器
arr.every(x=>x)
是ES6示例,而
arr.every(函数(x){return x})
是ES5示例。ES6是非常新的。这个标准是在2015年年中制定的。因此,它仍然没有在所有新浏览器中实现,可能永远不会在旧浏览器中工作。@Nate不是重复的,这是一个非常接近重复的特殊情况,因为
Array.AllTrue==(Array[0]&&Array.AllEqual)
。@John基本上是另一个问题。碰巧这个问题的一个解决方案,就是这个问题解决方案的应用。事实上,这并不是最简单的解决方案,因为JavaScript有一个解决这个问题的内置解决方案。这就是为什么根据自己的优点考虑这样的问题是有用的。对从根本上讲不是真的。JavaScript没有一个集合类,但抽象地说,这可以看作是两个集合问题。在AllEqual的情况下,您将成员身份投影到一个集合上,结果是(set.cardinality==1)。这个问题完全相同,只是你从set.add(true)开始。@John我不同意这些问题属于同一个一般类别。我不同意“这个问题完全一样……”。你所描述的相似之处在于你提出的解决方案,而不是问题本身。如果您选择使用集合来解决它,我可能会选择通过迭代和检测异常值来解决它(就像其他问题的解决方案一样)。哦,仅供参考,JS在ES6中有一个内置的<代码>(arr.filter(布尔).length==arr.length)
在这种情况下不起作用。您应该使用
==