If子句有多个条件

时间:2014-12-27 15:31:39

标签: javascript arrays if-statement for-loop

我似乎迷失了或者似乎只是感到困惑。 为了简化问题:我想检查一个数组中的每个是否都为true,当且仅当全部为真时,它应该返回一个特定的值。

var trueArray=[true,true,true,true];

在我的代码中,数组的长度最多为100个元素,我不能简单地检查每个元素,但需要一个for循环。

for(var i=0;i<trueArray.length;i++){
   if(trueArray[i]===true)
  {
     //do something
  }
}

但是,上面的代码在循环的每一步都做了一些事情,但我只希望它在每个条件保持为真时执行某些操作,而不是介于两者之间。目前想不出解决方案?

6 个答案:

答案 0 :(得分:2)

如果保证是boolean,您可以检查其中是否有任何错误,而不是Array.prototype.indexOf

if(trueArray.indexOf(false) === -1) {
   // none are false, so do stuff
}

您不需要使用循环或创建函数。

答案 1 :(得分:2)

使用Array.prototype.every

if (trueArray.every(function(x) { return x; })) {
    //do something
}

答案 2 :(得分:0)

声明一个已经为true的检查变量,如果其中一个数组值为false,则将其设置为false。之后,检查它是否属实并做了些什么。

示例:

var trueArray=[true,true,true,true];
var bCheckArrayVal = true;

for(var i=0;i<trueArray.length;i++){
   if(trueArray[i]===false){
     bCheckArrayVal = false;
   }

   if (bCheckArrayVal) {
      // do something if true
   } else {
      // do something if false
   }
}

答案 3 :(得分:0)

请尝试以下代码:

var currentValue = true;
for(var i=0;i<trueArray.length;i++){
     if(trueArray[i]===false){
         currentValue = false;
     }
}
if(currentValue === true){
    //do something
}

答案 4 :(得分:0)

一旦你得到一个错误的值,你应该立即短路逻辑,因为你把它放在for中的误导性逻辑,所以答案不会得到你的问题,即使你只想在所有值都为真的情况下完成一次。< / p>

你需要像

这样的东西

var flag = true; for(var i = 0; i

if(flag){做某事}

答案 5 :(得分:0)

你可以这样做......

var trueArray=[true, true, true, true];
var allTrue=false;
for(var i=0;i<trueArray.length;i++){
   if(trueArray[i]===false){
       allTrue=false;
       break;
   }
   else
   {
       allTrue=true;
   }
}
if(allTrue==true)
{
      // do something if all values are true
}

如果检测到错误值,您必须中断循环。