具有多个条件的 if 子句

If clause with multiple conditions

本文关键字:if 子句 条件      更新时间:2023-09-26

我似乎迷路了,或者只是似乎很困惑。为了简化问题:我想检查数组中的每个数组是否都为 true,当且仅当所有数组都为 true,它才应该返回一个特定的值。

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

就像在我的代码中一样,数组的长度最多可以有 100 个元素,我不能简单地检查每个元素,而需要一个 for 循环。

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

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

使用 Array.prototype.every

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

如果保证是boolean你可以检查它们中的任何一个是否为假,而不是它们是否都是真的Array.prototype.indexOf

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

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

声明一个已经为 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
   }
}

尝试以下代码:

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

一旦得到一个假值,你就应该短路逻辑,必须答案没有得到你的问题,因为你把误导性的逻辑放在 for 中,即使你只希望它完成一次如果所有值都为真。

你需要类似的东西

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

如果(标志){做某事}

你可以这样做...

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
}

如果检测到 false 值,则必须中断循环。