嵌套循环混淆

时间:2019-07-29 13:41:21

标签: javascript html google-apps-script

我正在写一个嵌套的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>

1 个答案:

答案 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
}