我正在写一个嵌套的For Loop。尝试设置休息时间,但似乎不起作用。这是我想要做的。例如:
var playersList = sam,tom,jane
var playersDrafted = tom,jane
在playersDrafted
中找不到Sam,所以我希望Sam的名字不要有行号。汤姆(Tom)和珍(Jane)在playersDrafted
中找到了,所以我确实希望那里的名字有一个界线。我写的代码返回了这个:
山姆
山姆
tom
汤姆
jane
简
结果应为:
山姆
tom
jane
任何建议将不胜感激。
<div>
<table align="center">
<? for(var i=0;i<playersList.length;i++){ ?>
here:
<? for(var y=0;y<playersDrafted.length;y++){ ?>
<? if(playersList[i]==playersDrafted[y]) { ?>
<tr>
<td style="text-decoration: line-through;"><?=
playersList[i]; ?></td>
</tr>
<? break here; ?>
<? } ?>
<? } ?>
<tr>
<td><?=
playersList[i]; ?></td>
</tr>
<? } ?>
</table>
</div>
答案 0 :(得分:2)
正如@Shilly所说,在您的情况下,您实际上不需要2个嵌套的for循环。不使用2个嵌套的for循环也将减少代码的complexity空间(如果列表很大,则差异不可忽略)。
但是,正如您在使用2个嵌套的for循环时寻求帮助时,我已经用纯Javascript编写了这个小代码。我添加了一个布尔值notDrafted
,如果第二个循环未结束就结束了,我们将打印出未选球员的姓名。
var playersList = ["sam", "tom", "jane"];
var playersDrafted = ["tom", "jane"];
var notDrafted = true;
for (var i = 0; i < playersList.length; i++){
for (var j = 0; j< playersDrafted.length; j++) {
if(playersList[i]==playersDrafted[j]) {
console.log(playersList[i] + "with line");
notDrafted = false;
}
}
if (notDrafted) {
console.log(playersList[i]);
}
notDrafted = true; // reset to not drafted
}