多维布尔数组检查Javascript中是否全部为true

Kir*_*rry 9 javascript jquery boolean multidimensional-array

我有一个bool的多维数组,每个元素都设置为true:

var boolarray = $ .extend(true,[],board);

board是一个3x3多维字符串数组.boolarray只是一个深刻的副本.

     for (var i=0; i < boolarray.length; i++) {
              boolarray[i]
              for (var j=0; j < boolarray[i].length; j++) {
                boolarray[i][j] = true;
              };
            };     
Run Code Online (Sandbox Code Playgroud)

这给了我:

boolarray = [true,true,true,true,true,true,true,true,true]

我想检查所有元素是否都为真,如果是这种情况则返回.但是我的方法不起作用.

if (boolarray == true)
{
console.log("all elements in boolarray are true, return true ")
return true;
}
else 
{
console.log("not all elements in boolarray are true, return false")
return false;
}
Run Code Online (Sandbox Code Playgroud)

关于如何检查boolarray是否真实的任何想法?

小智 28

.every()...

var boolarray = [true,true,true,true,true,true,true,true,true];

boolarray.every(Boolean);
Run Code Online (Sandbox Code Playgroud)

演示: http : //jsfiddle.net/gFX7X/


如果第一个循环的唯一目的是创建第二个循环,那么你可以跳过它并执行此操作......

var boolarray = [[true, true, true], 
                 [true, true, true], 
                 [true, true, true]];

boolarray.every(function(arr) {
    return arr.every(Boolean)
}); 
Run Code Online (Sandbox Code Playgroud)

演示: http : //jsfiddle.net/gFX7X/1/


或者是前一个版本的略短版本:

boolarray.every(Function.call.bind(Boolean, null))
Run Code Online (Sandbox Code Playgroud)


Luk*_*ett 1

您需要再次循环遍历数组以检查所有值;与分配它们的方式非常相似:

for (var i=0; i < boolarray.length; i++) {
    for (var j=0; j < boolarray[i].length; j++) {
        if (boolarray[i][j] == false) {
            return false;
        }
    };
}; 

return true;
Run Code Online (Sandbox Code Playgroud)