我有一个对象数组,其中包含一个带有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");
答案 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");
}
}
}