我似乎迷失了或者似乎只是感到困惑。 为了简化问题:我想检查一个数组中的每个是否都为true,当且仅当全部为真时,它应该返回一个特定的值。
var trueArray=[true,true,true,true];
在我的代码中,数组的长度最多为100个元素,我不能简单地检查每个元素,但需要一个for循环。
for(var i=0;i<trueArray.length;i++){
if(trueArray[i]===true)
{
//do something
}
}
但是,上面的代码在循环的每一步都做了一些事情,但我只希望它在每个条件保持为真时执行某些操作,而不是介于两者之间。目前想不出解决方案?
答案 0 :(得分:2)
如果保证是boolean
,您可以检查其中是否有任何错误,而不是Array.prototype.indexOf
if(trueArray.indexOf(false) === -1) {
// none are false, so do stuff
}
您不需要使用循环或创建函数。
答案 1 :(得分:2)
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
}
如果检测到错误值,您必须中断循环。