如果数组的所有值都为true,如何返回true,否则返回false?

时间:2016-01-26 21:38:23

标签: javascript jquery arrays

我有一个这样的数组:

var arr = [ true, true, true ];

现在我想获得true,因为上面数组的所有键都是true

另一个例子:

var arr = [ true, false, true ];

现在我需要获取false,因为数组中只有一个false

我该怎么做?

4 个答案:

答案 0 :(得分:6)

对于ES5兼容性,执行此操作的最短代码为arr.every(x => x)arr.every(function(x) {return x})

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

答案 1 :(得分:2)

怎么样:

!arr.includes(false)

因为它在第一个 false 之后停止,所以可读性更好,速度更快。看看它的实际效果:

let arr = [ true, true, true ]

console.log(!arr.includes(false))

arr = [ true, false, true ]

console.log(!arr.includes(false))

答案 2 :(得分:0)

我同意every是一个很好的答案,但是您也可以使用some,如果数组中有很多元素,则速度会更快,因为找到第一个false时该函数将立即停止。例如:

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

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

答案 3 :(得分:0)

我也想使用以下技巧来解决问题:

const arr = [ true, true, true ];
const allTrue = (arr.filter(Boolean).length == arr.length);
console.log(allTrue);

filter()中的表达式将仅过滤真实值,然后我们将过滤后的数组的长度与原始数组进行比较,以检查是否全部为真。