循环值测试

时间:2010-03-01 11:01:02

标签: javascript arrays object testing while-loop

我有一个对象数组,其中包含一个带有true或false的键值。这些值从false开始,但在完成工作时切换为true。我想确定所有值何时完成,即所有值都切换为true。在while循环上是否存在偏差(逻辑如下),其中包含可以解决此问题的test if语句。

basicarray = [{"value" : false}, {"value" : false},
              {"value" : false}, {"value" : false},
              {"value" : false}  ];

非工作逻辑


totalcount = 0;

while(totalcount < basicarray.length )
{
  for(a=0 ; a < basicarray.length; a++)
  {
    if(basicarray[a].value = true)
    {
      totalcount = totalcount + 1;
    }
  }
}
alert("all true");

4 个答案:

答案 0 :(得分:1)

使用==代替=:

if(basicarray[a].value == true)  // Notice the ==
{
   totalcount++;    // this better than totalcount = totalcount + 1
}

或者

if(basicarray[a].value)
{
   totalcount++
}

答案 1 :(得分:1)

你基本上只是从功能范例中做each。以下是等效的:

var result = true;

for ( var i=0, l=basicarray.length; i<l; i++ ) {
    result = basicarray[i].value;

    // If result is ever false, there's no point in continuing
    if ( !result ) { break; }
}

console.log(result);

答案 2 :(得分:0)

这将在开始时计算数组元素,然后在元素为真时从计数器中减去。一旦计数器为零,所有元素都应为真。

  var basicarray = [{"value" : true}, {"value" : true},
                {"value" : true}, {"value" : true},
                {"value" : true}  ];

  var c = basicarray.length;
  for(var i = 0; i < basicarray.length; i++) {
    if(basicarray[i].value) c--;
  }

  if(c == 0) {
    alert('All True');
  } 

答案 3 :(得分:0)

这是我的解决方案。

for (j in basicarray) {
   if (!basicarray[j].value) {break;}
   else {
      if (basicarray.length-1 == j) {
       alert("all complete");
      }
   }
}