我有一个这样的数组:
var arr = [ true, true, true ];
现在我想获得true
,因为上面数组的所有键都是true
。
另一个例子:
var arr = [ true, false, true ];
现在我需要获取false
,因为数组中只有一个false
。
我该怎么做?
答案 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()中的表达式将仅过滤真实值,然后我们将过滤后的数组的长度与原始数组进行比较,以检查是否全部为真。