一种更好的方法来检查嵌套数组中的每个值是true还是false?

问题描述 投票:3回答:3

我有一个这样的嵌套数组。

var arr = [[false,false,false,false],[false,false,false,false],[false,false,false,false],[false,false,false,false]]

我想检查每个值是否为假。我可以想到一种方法。

let sum = 0;
arr.forEach((row, i) => {
    row.forEach((col, j) => {
      sum = sum +arr[i][j]    
    });
});
if(sum === 0){
    console.log("all values false")
}

这有效。但是我很好奇是否有更好的方法?检查所有值是对还是假?

javascript arrays multidimensional-array ecmascript-6 ecmascript-5
3个回答
7
投票

您可以使用嵌套的every()

var arr = [[false,false,false,false],[false,false,false,false],[false,false,false,false],[false,false,false,false]]
const res = arr.every(x => x.every(a => a === false));
console.log(res)

为了使代码更加清晰,您可以先flat(),然后使用every()

var arr = [[false,false,false,false],[false,false,false,false],[false,false,false,false],[false,false,false,false]]
const res = arr.flat().every(x => x === false)
console.log(res)

我正在考虑只检查false。如果要检查所有伪造的值(null, undefined等)。您可以使用!代替与false]进行比较

const res = arr.every(x => x.every(a => !a));

1
投票

您可以使用.array.every()方法:


1
投票

您可以采用两个嵌套的var arr = [[false,false,false,false],[false,false,false,false],[false,false,false,false],[false,false,false,false]] let result = arr.every(x => x.every(y => y === false)); console.log(result);,因为如果找到一个Array#some值,则迭代将停止。然后取负值。

© www.soinside.com 2019 - 2024. All rights reserved.