【问题标题】:Array check with for loop使用 for 循环检查数组
【发布时间】:2015-10-12 12:01:39
【问题描述】:

1.嘿伙计们,我如何将这些分开? 2.对不起,我是新手,但我的脑袋已经裂了一段时间,如何让这段代码分开写句子而不不停地写?

<html>
  <body>
    <script type="text/javascript">
      var x=[15,22,28,30,25,11,12,29,27,26];//right numbers
      var c=1;
      var e=0;
      var i=0;
      for (c=1;c<=10;c++) {
        var y=Number(prompt("enter number from 10 to 30",0));
        for(i=0;i<=9;i++) {
          if(y==x[i]) {//checking every number in array
            document.write("u right.<br>");
            e=e+1;
          }
          else {
            document.write("u wrong.<br>");//this writes every time it goes trough the loop,i tried breaking,but it just quits the loop on first number in array,i tried continue,no luck
          }
        }
      }
         if(e<5) {//amount of time you guessed right
          document.write("u lose ");
        }
        else {
          document.write("u win");
        }
    </script>
  </body>
</html>

【问题讨论】:

  • 写下你为什么投反对票
  • 欢迎来到 StackOverflow。请稍微澄清一下您的问题,即您到底想达到什么目标,什么没有按预期工作。这将使其更有可能获得您可能正在寻找的有用且具体的答案。
  • 我试图让程序在每次我在提示符中选择数字时检查数组框,这是训练练习我可以写整列单独的“if”,但选择让它更多对我来说更漂亮也更棘手,主要问题是循环产生过多的答案行,每个否定检查都会显示,如果答案正确,我也不知道如何正确退出循环

标签: javascript html arrays loops for-loop


【解决方案1】:
<html>
        <body>
        <script type="text/javascript">
        var x=[15,22,28,30,25,11,12,29,27,26];//right numbers
        var c=1;
        var e=0;
        var i=0;
        for (c=1;c<=10;c++)
        {
        var y=Number(prompt("enter number from 10 to 30",0));
        var right = false;
        for(i=0;i<=9;i++)
          {
            if(y==x[i]) //checking every number in array
           {
             right = true;
           }
          }
          if (right)
           {
             e++;
             document.write("u right.<br>");
           }
           else {
                document.write("u wrong.<br>");
           }
         }
       if(e<5)//amount of time you guessed right
       {
       document.write("u lose ");
       }
      else
      {document.write("u win");}



     </script>
     </body>
     </html>

您的代码可以在许多方面进行优化:

    <html>
  <body>
        <script type="text/javascript">
          var x=[15,22,28,30,25,11,12,29,27,26];//right numbers
          var c=1;
          var e=0;
          var c=0;
          while (c < 10) 
          {
            c++;
            var y=Number(prompt("enter number from 10 to 30",0));
            if (x.indexOf(y) != -1)
            {
              e++;
              document.write("u right.<br>");
            }
            else {
              document.write("u wrong.<br>");
            }
          }
          if(e<5)//amount of time you guessed right
          {
            document.write("u lose ");
          }
          else
          {
            document.write("u win");
          }
     </script>
   </body>
</html>

【讨论】:

  • 是的,我们没有学习如何使用 true 或 false,这很有帮助:) 我仍然不明白,但我会尝试你的代码正在运行,太棒了 thanx!
  • 如果我理解正确,在您的第二次编辑中,您使用 x.indexOf(y)!从零开始在数组中搜索它?这就是-1 代表什么?
  • indexOf 如果数组不包含参数“!= 不等于”,则返回 -1,表示您确实找到了相似之处(为真)。
  • 所以它一步搜索所有数组索引? ,它肯定不会写 10 次我对或错,所以这是一个胜利
  • 是 indexOf 正在查看所有数组索引 developer.mozilla.org/en/docs/Web/JavaScript/Reference/…
【解决方案2】:

使用数组的indexOf方法检查数组中是否有值。

如果值不可用,则返回 -1,否则返回该值的位置。

<html>
  <body>
    <script type="text/javascript">
      var x = [15,22,28,30,25,11,12,29,27,26];
      var e = 0;
      for (var c=1;c<=10;c++) {
        var y = Number(prompt("enter number from 10 to 30",0));        
        x.indexOf(y) > 0?(document.write("u right.<br>"),e++):document.write("u r wrong.<br>");
      }
      e<5?document.write("u lose "):document.write("u win");
    </script>
  </body>
</html>

【讨论】:

  • 谢谢,但是indexof后面的这个问号是什么,它像“if”吗?坦率地说,这个 indexof 函数给我留下了深刻的印象,但是我们现在在学校还没有使用它,我们只使用 for、while、case、if、else if 和 switch
  • 欲了解更多信息,请访问w3schools.com/jsref/jsref_indexof.asp
猜你喜欢
  • 2023-03-27
  • 1970-01-01
  • 2020-11-01
  • 2023-03-14
  • 2013-02-19
  • 1970-01-01
  • 2018-04-25
  • 1970-01-01
相关资源
最近更新 更多