编写while循环/ for循环以获取成分。

时间:2018-08-09 22:01:13

标签: javascript for-loop while-loop

这是我正在研究的一本教科书。

var ingredients = ["eggs", "milk", "flour", "sugar", "baking soda", "baking powder", "chocolate chips", "bananas"];

// Write a while loop that prints out the contents of ingredients:

这是我的代码:

var i = 0;

while (i < ingredients.length) {
  i++
  console.log(ingredients[i]);
} 

结果:

milk
flour
sugar
baking soda
baking powder
chocolate chips
bananas
undefined

第二个问题:

写一个for循环,打印出配料的内容:

我的代码:

for (i = 0; i < ingredients.length; i++) {
  console.log(ingredients[i]);
}

这将打印出所需的所有内容。

为什么while循环不能打印出“鸡蛋”并在其末尾打印“未定义”-而for循环很好呢?

他们俩都不应该打印相同的东西吗?

谢谢。

3 个答案:

答案 0 :(得分:6)

您在访问值前先增加i ,因此您以1而不是0开头,并以最后一个数组元素上方的一个结束,并返回undefined

所以您需要像这样运行它:

var i = 0;

while (i < ingredients.length) {
  console.log(ingredients[i]);
  i++; //Notice: After accessing the element
} 

答案 1 :(得分:1)

这是我第一次遇到JavaScript问题。第一个答案是更好的方法,但是这是一种尝试来帮助他人查看循环,数组和变量的尝试。

同时循环:

var ingredients = ["eggs", "milk", "flour", "sugar", "baking soda", "baking powder", "chocolate chips", "bananas"];

var i =0

        while(i < ingredients.length){
            console.log(ingredients[i]);
            i++;
            }

执行While循环:

    var ingredients = ["eggs", "milk", "flour", "sugar", "baking soda", "baking powder", "chocolate chips", "bananas"];
    var i=0;
        do{
            console.log(ingredients[i]);
            i++
            }
            while (i<ingredients.length);

答案 2 :(得分:1)

删除i ++并将其放置在console.log(ingredients [i]);

下方的行上

样品:

     var i = 0;

    while (i < ingredients.length) {
        console.log(ingredients[i]);
         i++;
      } 

在控制台可以打印出第一个索引中找到的数据之前,i ++正在递增。 它从0开始,但在打印该索引之前变为1。

由于相同的原因,发生未定义。因为i ++在console.log之上,所以它超出了数组范围。当i ++位于console.log下方时,它将返回到循环的顶部,并在尝试将其打印出来之前检查它是否在数组的范围内。

for循环在每个循环结束时负责自动增量,因此不会给您任何错误