【问题标题】:Debugger is not entering into "If loop"调试器没有进入“如果循环”
【发布时间】:2017-10-02 08:01:22
【问题描述】:

Debugger 没有进入“If 循环”。调试器甚至进入 for 循环,它检查长度并增加 i。

function doesStevenLikeSpagetti (favoriteFoods) {
debugger;
  for (var i=0; i<favoriteFoods.length; i++ ) {
    if( favoriteFoods[i] === "spaghetti") {
      return true;
    }
  }
return false;
}
doesStevenLikeSpagetti("spaghetti");

【问题讨论】:

  • 我看到的 favoriteFoods 不是一个数组,是一个字符串
  • s !== spaghetti,一个简单的console.log(favoriteFoods[i]) 在 if 之前就足以自己找到错误
  • @ÁlvaroTouzón - 那么如果它是一个字符串呢?你懂javascript吗?
  • 如果favouriteFoods实际上是一个数组,有Array.prototype.indexOf来检查它是否包含'spaghetti'...
  • 您的函数似乎需要一个数组:doesStevenLikeSpaghetti(["fish", "avocado", "spaghetti"]);

标签: javascript arrays string


【解决方案1】:

var favoriteFoods = "spaghetti";

for( var i=0; i<favoriteFoods.length; i++ ){
    console.log(favoriteFoods[i]);
    if( favoriteFoods[i] === "spaghetti")
       console.log("found: ", i)
}

什么都找不到,因为循环正在迭代变量favoriteFoods中单词的字母本身。

但如果你使用数组:

var favoriteFoods = ["pasta", "spaghetti", "apple"];

for( var i = 0; i < favoriteFoods.length; i++ ){
  console.log(favoriteFoods[i]);
  if( favoriteFoods[i] == "spaghetti" )
    console.log("found: " + favoriteFoods[i] + " at index: ", i);
 }

【讨论】:

    【解决方案2】:

    您正在将参数 favoriteFoods 的每个字符与整个单词(字符串)“spaghetti”进行比较。

    您应该像这样调用您的函数,以传递一个数组并与作为参数传递的数组的每个元素进行比较。

    doesStevenLikeSpagetti(["spaghetti"])
    

    【讨论】:

      【解决方案3】:

      您的错误是您尝试循环一个字符串,所以favoriteFoods[i] 在第一次迭代时将是s

      我想你有一个你的角色喜欢的东西的列表,并且想检查他是否喜欢某样东西。您可以使用indexOf(或includes),根本没有理由循环。

      let stevenLikes = ["spaghetti", "pizza", "bacon"];
      
      function doesStevenLike(food) {
       return stevenLikes.indexOf(food) > -1;
       // or ES6 includes 
       // return stevenLikes.includes(food);
      }
      
      console.log(doesStevenLike("spaghetti"));
      console.log(doesStevenLike("chicken feed"));
      console.log(doesStevenLike("bacon"));

      【讨论】:

        猜你喜欢
        • 2011-09-30
        • 1970-01-01
        • 1970-01-01
        • 2023-02-21
        • 2013-11-16
        • 2012-04-25
        • 2013-05-31
        • 2011-08-17
        • 1970-01-01
        相关资源
        最近更新 更多