检查数组中的所有值是否为true,如果是,则返回一个true布尔语句(JavaScript)

86
我有一个布尔数组,最初的值都是false,因为其中至少一个值是false: var validation = [false, true, true] 在某一时刻,它将拥有全部的选项(索引)都是"true",像这样: validation = [true, true, true] 当所有选项都是true时,我该如何将此数组设置为"true"? 对于这个愚蠢的问题我很抱歉。

1
你也可以使用 "some",例如:var arr = [true, true, true, true, true, true ]; var allTrue = !arr.some(x => x === false); console.log(allTrue); - darmis
@darmis 此外,some 会更快,因为它一旦找到 false 就会停止 - 不需要检查每个项目以查看它们是否全部为 true - godblessstrawberry
3个回答

184
你可以使用 .every() 方法:

let arr1 = [false, true, true],
    arr2 = [true, true, true];

let checker = arr => arr.every(v => v === true);

console.log(checker(arr1));
console.log(checker(arr2));

如@Pointy所提到的,您可以将Boolean作为回调函数简单地传递给every()

let arr1 = [false, true, true],
    arr2 = [true, true, true];

let checker = arr => arr.every(Boolean);

console.log(checker(arr1));
console.log(checker(arr2));


20
简单地说,let result = arr1.every(Boolean); - Boolean构造函数将返回truefalse - Pointy
“Boolean” 的意思是将每个数组成员转换为布尔值,对吗? - buncis
@buncis 简而言之,是的。Boolean是一个内置函数,当在没有使用new运算符的情况下使用时,它将把其参数转换为相应的布尔值。 - Mohammad Usman

36
你可以使用这个来检查数组中的每个值是否为真。
validation.every(Boolean)

如果它包含字符串,那么这将失败。["FALSE"].every(Boolean)将返回true。 - TOLULOPE ADETULA
11
@TOLULOPEADETULA 预料之中。在 JS 中,“FALSE”是一个真值(truthy value)。您不能根据字符串的内容将其评估为 false。 - Abhishek Agarwal
“Boolean” 的意思是将每个数组成员转换为布尔值,对吗? - buncis

11
您可以使用“includes”方法来检查数组是否具有“false”值,例如:

您可以使用“includes”方法来检查数组是否具有“false”值,例如:

if (validation.includes(value)) {
    // ... your code
}

这并不能涵盖所有的值,它只是检查数组中是否有一个值包含了你的值! - Danish
1
如果(!validation.includes(false)){ } 例如。虽然.every()更好!! - Jamie G
包括(includes)肯定更好,因为我认为every是ES6及以上版本的特性,或者只是一个非常新的功能。我不像使用indexOf那样经常使用includes,所以我会使用它 :) - RixTheTyrunt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接