BOOLEAN在添加FOR LOOP JavaScript后无法正常工作

时间:2018-11-04 19:18:43

标签: javascript for-loop boolean

我正在处理一个赋值,即在变量与数组中的值匹配之后,布尔值必须切换。该变量必须使用for循环与数组中的值匹配。但是,在介绍for循环之前,我可以切换布尔值。但是在我介绍了for循环之后,布尔值就停留在其原始值false上。

有人可以解释为什么会这样吗?

我还可以要求,我不是在寻找“怎么做”,而是要解释为什么会发生这种情况-因此,如果您不向我推荐实现这一目标的“另一种更好的方法”,我将不胜感激-我只是个初学者,所以只想了解这个概念。

我在for循环(正确更改布尔值)之前使用的代码是:

var c = 3;
var w = [];
var m = false;

w.push(3,4);

if (c === w[0]){
  m = true;
}

alert (m);

但是,在添加for循环计数器并将if的条件从c===w[0]更改为c===w[i]之后,我仅使用以下代码得到“假”警报:

var c = 3;
var w = [];
var m = false;

w.push(3,4);

for (i=0; i<2 && c!==w[i]; i++){
  if (c === w[i]){
    m = true;
  }
}

alert (m);

2 个答案:

答案 0 :(得分:3)

如果不希望仅满足一个条件就必须打开布尔变量,而不必使用for循环,则可以使用some()方法。使用此方法,循环将不会遍历所有对象,并且在满足您的条件后将停止。示例如下所示:-

var arr = [3,4,5];
var m = 4;
var bool = false;

array.some(function(item) {
if (m === item){
bool = true;
}
});
alert(bool);

因此,从数组中获取匹配的对象后,这基本上可以使您发出警报。

答案 1 :(得分:0)

在第一次迭代之前也会检查for中的条件,因此不会触发if。签出这样的代码:

var c=3;
var w=[];
w.push(3,4);
var m=false;
for (var i=0;i<2 && c!==w[i];i++){
    console.log('In loop')
    if (c===w[i]){
        m=true;
    }
}