问题描述
我正在编写一个 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
之前的 if
或 else 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;
}