调试器没有进入"如果循环"

时间:2017-10-02 08:01:22

标签: javascript arrays string

Debugger没有进入"如果循环"。调试器甚至进入for循环,它检查长度,它也增加i。

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

3 个答案:

答案 0 :(得分:0)

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
    <form id="frm1">
        <select name="district">
            <option value="" disabled="" selected="" hidden="">Area ...</option>
            <option value="NWFP">NWFP</option>
            <option value="FATA">FATA</option>
        </select>
    </form>

因为循环正在迭代变量var favoriteFoods = "spaghetti"; for( var i=0; i<favoriteFoods.length; i++ ){ console.log(favoriteFoods[i]); if( favoriteFoods[i] === "spaghetti") console.log("found: ", i) }中单词的字母本身,所以不会找到任何内容。

但是如果使用数组:

favoriteFoods

答案 1 :(得分:0)

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

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

doesStevenLikeSpagetti(["spaghetti"])

答案 2 :(得分:0)

您的错误是您尝试循环字符串,因此第一次迭代时favoriteFoods[i]将为s

我想你有一个你的角色喜欢的东西清单,并想检查他是否喜欢什么。您可以使用indexOf(或includes)执行此操作,根本没有理由进行循环。

&#13;
&#13;
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"));
&#13;
&#13;
&#13;