for 循环使用 break 和 continue

for loop using break and continue

我正在写一个for循环,需要向数组'bag,'推送不超过三个元素,并使用'break'在'bag'满时跳出循环与上述三个要素。到目前为止,我的代码通过了四项测试中的三项。我遇到的问题是,对于第四个测试,应该是代码 'breaks' 和循环停止 运行 的地方,相反,第四个元素被推送到我的 'bag'大批。如果 '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;
}

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

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

也不是这个

else continue;

您可以使用下面的JS代码。我刚刚在 if else 语句中添加了 bag 数组的条件 must be contain only 3 elements at start.

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