【问题标题】:Better way to check if every value in a nested array is true or false?检查嵌套数组中的每个值是真还是假的更好方法?
【发布时间】:2020-07-05 08:20:08
【问题描述】:

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

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


    【解决方案1】:

    你可以使用.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);

    【讨论】:

      【解决方案2】:

      你可以使用嵌套的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));
      

      【讨论】:

      • 以毫秒为单位,太棒了
      【解决方案3】:

      您可以采用两个嵌套的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);

      【讨论】:

      • 我决定使用这个解决方案。在我的情况下,我不需要检查每个值。我的错,我应该在描述中提到。不错!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-31
      • 1970-01-01
      • 2021-11-23
      相关资源
      最近更新 更多