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

How to return true if all values of array are true otherwise return false?

本文关键字:返回 数组 true false 何返回 如果      更新时间:2023-09-26

我有一个这样的数组:

var arr = [ true, true, true ];

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

再比如:

var arr = [ true, false, true ];

现在我需要得到false,因为数组中有一个false

我该怎么做?

执行此操作

的最短代码是 ES5 兼容性的 arr.every(x => x)arr.every(function(x) {return x})

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

怎么样:

!arr.includes(false)

它的可读性更强,运行时也更好,因为它在第一个false后停止。查看实际操作:

let arr = [ true, true, true ]
console.log(!arr.includes(false))
arr = [ true, false, true ]
console.log(!arr.includes(false))

我同意每个答案都是很好的答案,但您也可以使用一些,如果数组中有很多元素,它会更快,因为当发现第一个 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);

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

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

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