检查嵌套数组中的每个值是真还是假的更好方法?
Better way to check if every value in a nested array is true or false?
我有一个这样的嵌套数组。
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")
}
这行得通。但我很好奇是否有更好的方法?检查所有值是真还是假?
可以使用.array.every()
方法:
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);
您可以使用嵌套 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));
您可以使用两个嵌套的 Array#some
,因为如果您找到一个 true
值,迭代将停止。然后取负值。
var array = [[false, false, false, false], [false, false, false, false], [false, false, false, false], [false, false, false, false]],
result = !array.some(a => a.some(Boolean));
console.log(result);
我有一个这样的嵌套数组。
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")
}
这行得通。但我很好奇是否有更好的方法?检查所有值是真还是假?
可以使用.array.every()
方法:
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);
您可以使用嵌套 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));
您可以使用两个嵌套的 Array#some
,因为如果您找到一个 true
值,迭代将停止。然后取负值。
var array = [[false, false, false, false], [false, false, false, false], [false, false, false, false], [false, false, false, false]],
result = !array.some(a => a.some(Boolean));
console.log(result);