【问题标题】:BOOLEAN not working after adding FOR LOOP JavaScript添加 FOR LOOP JavaScript 后 BOOLEAN 不起作用
【发布时间】:2018-11-04 19:18:42
【问题描述】:

我正在处理一个在变量与数组中的值匹配后必须切换布尔值的赋值。该变量必须使用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);

【问题讨论】:

  • 发生这种情况是因为循环永远不会运行,i &lt; 2 &amp;&amp; c !== w[i] 在循环的开头是false(参见:c = 3、w = [3, 4] --> w[0] === 3 和 @987654337 @)。

标签: javascript for-loop boolean


【解决方案1】:

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

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

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

因此,一旦您从数组中获取匹配的对象,这基本上会给您警报。

【讨论】:

    【解决方案2】:

    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;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-21
      • 2017-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多