Лучший способ проверить, является ли каждое значение во вложенном массиве истинным или ложным? - PullRequest
5 голосов
/ 24 марта 2020

У меня есть такой вложенный массив.

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")
}

Это работает. Но мне любопытно, есть ли лучший способ? проверить, все ли значения являются истинными или ложными?

Ответы [ 3 ]

9 голосов
/ 24 марта 2020

Вы можете использовать вложенные 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 et c). Вы можете использовать ! вместо сравнения с false

const res = arr.every(x => x.every(a => !a));
5 голосов
/ 24 марта 2020

Вы можете взять два вложенных 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);
1 голос
/ 24 марта 2020

Вы можете использовать .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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...