for 循环使用 break 和 continue

问题描述

我正在编写一个 for 循环,它需要将不超过三个元素推送到数组 'bag' 中,并在 'bag' 充满上述三个元素时使用 'break' 跳出循环。到目前为止,我的代码通过了四项测试中的三项。我遇到的问题是,对于第四个测试,它应该是代码“中断”并且循环停止运行的地方,相反,第四个元素被推送到我的“包”数组中。如果 'bag' 未满,我需要遍历 'dolls' 直到最后一个元素。

我是一个完全的初学者,我尝试了几种不同的方法,但我无法弄清楚我做错了什么。我的代码如下。



function grabDoll(dolls){
  var bag=[];
  //coding here
  for (let i = 0; i < dolls.length; i++) {
    if (dolls[i] == 'Hello Kitty' || dolls[i] == 'Barbie doll') {
      bag.push(dolls[i])
    } else if (dolls[i] == '') {
      continue;
    } else if (bag.length - 1 === 2) {
      break;
    } else continue;
  }
  return bag;
}

解决方法

你需要把你的代码改成这个

function grabDoll(dolls){
  var bag=[];
  //coding here
  for (let i = 0; i < dolls.length; i++) {
    if(bag.length === 3) {
      break;
    } else if (dolls[i] == 'Hello Kitty' || dolls[i] == 'Barbie doll') {
      bag.push(dolls[i])
    }
  }
  return bag;
}

您的代码只会检查 else if 之前的 ifelse if 是否为假。即,如果 if (dolls[i] == 'Hello Kitty' || dolls[i] == 'Barbie doll') 解析为 true,您的代码将不会检查与该 else if 相关的 if。 此外,您不需要命令 continue 来继续循环。当循环结束时,它会再次检查循环条件,如果它解析为真,则循环再次运行,否则,循环停止。所以你不需要这部分

} else if (dolls[i] == '') {
      continue;

也不是这个

else continue;
,

您可以使用以下 JS 代码。我刚刚在 if else 语句中添加了 bag 数组的条件必须在开始时只包含 3 个元素。

    function grabDoll(dolls)
    {
      var bag=[];     
      for (let i = 0; i < dolls.length; i++) 
      {
         if(bag.length == 3)
         {
           break;
         }
         else if (dolls[i] == 'Hello Kitty' || dolls[i] == 'Barbie doll') 
         {
           bag.push(dolls[i]);
         }            
         else continue;
       }
      return bag;
    }
,

感谢@T.J Crowder 的评论。知道了

function grabDoll(dolls){
  var bag=[];
  //coding here
  for (let i = 0; i < dolls.length; i++) {
    if (bag.length === 3) {
      break;
    } else if (dolls[i] == 'Hello Kitty' || dolls[i] == 'Barbie doll') {
      bag.push(dolls[i])
    } else if (dolls[i] == '') {
      continue;
    }     
    }
  return bag;
}