检查所有返回的数组是否包含值false

时间:2016-01-11 13:02:29

标签: javascript arrays

console.log(allStatuses);

此变量返回两个数组:

[true, false, false, false, false]

[true, false, false, true, false]

有时会返回更多数组,其值为true/false

我想检查所有返回的数组是否包含false,如果是,请执行某些操作。

完成这项工作的最佳方法是什么?

以下是负责的代码:

angular.forEach($scope.prefAccount, function(account){
     if (typeof account === 'object') {
          var allStatuses = [];  
          angular.forEach(account, function(alertStatus){
               return allStatuses.push(alertStatus.enabled);
          })
          console.log(allStatuses);
     }                    
});

2 个答案:

答案 0 :(得分:6)

您可以使用.every.concat从二维创建一维数组)

var allStatuses = [
  [true, false, false, false, false],
  [true, false, false, true, false]
]
allStatuses = [].concat.apply([], allStatuses);

var isFalse = allStatuses.every(function (el) {
  return el === false;
})

console.log(isFalse);

答案 1 :(得分:3)

最短,最语义的版本是:

allStatuses.every(a => !a.some(Boolean))

或没有箭头功能:

allStatuses.every(function(a) { return !a.some(Boolean); })

英文:

  

allStatuses中的每个数组都不应该有某些(任意)的真值。