【问题标题】:jQuery Loop - loop count to be used inside loopjQuery Loop - 在循环内使用的循环计数
【发布时间】:2014-10-21 05:42:11
【问题描述】:

我有一组变量:

var var1 = 0;
var var2 = 0;
var var3 = 0;
var var4 = 0;
var var5 = 0;

我想用 for 循环检查它们,但我不太确定语法:

for( var i = 1; i<6; i++){
     alert(var[i]);
}

for 循环不会产生任何结果。

【问题讨论】:

  • 为什么没有数组并在循环中执行array[i]
  • 没有什么好的方法可以做到这一点。您可以使用 window['var1'] 等,但这只是 hinky。请改用数组或对象。

标签: javascript jquery html loops variables


【解决方案1】:

将它们放在一个数组中。

var vars = [0, 0, 0, 0, 0, 0];
for(var i = 0; i < vars.length; i++) {
alert(vars[i]);
}

【讨论】:

  • 为什么会被否决?对于 JavaScript 新手来说,这是正确的方法和最佳建议。
  • @Axel 它是如何“破解”的?你在这里真的不正确 - OP想要做的是真正的“黑客”。
  • @Mritunjay:“我想用 for 循环检查它们,但我不太确定语法:”问题是关于访问已经给定数据的正确语法。
  • @user2908232,正确答案是“您解决更大问题的方法根本上是错误的”
  • @Pointy:除了你不能盲目地开始更改其他代码的部分。这就是为什么你必须至少在某种程度上相信这个问题,而 cmets 的目的是要求澄清。他的意思是数据已经这样定义了吗?
【解决方案2】:

如果您在全局范围内定义变量,则可以使用 window['var'+i] 访问这些值:

for(var i = 1; i<6; i++){
     alert(window['var'+i]);
}

【讨论】:

    【解决方案3】:

    要访问它们,您必须使用它们所写入的范围。如果您的代码在 window 范围内,则将变为:

    for( var i = 1; i<6; i++){
         alert(window['var'+i]);
    }
    

    当然,如果它在特定于您正在做的任何事情的不同范围内,它会更干净。在那些情况下经常

    for( var i = 1; i<6; i++){
         alert(this['var'+i]);
    }
    

    会起作用的。

    【讨论】:

      【解决方案4】:

      您使用的数据结构不适合这个。对于您想要做的事情,使用数组或对象更加可行,并且易于扩展。

      var arr = [0,0,0,0,0,0];
      
      for (var i = 0; i < arr.length; i++) {
          alert(arr[i]);
      }
      

      【讨论】:

      • 这是一个hack,实际上不是答案:)
      • 这正在改变问题。数据结构是问题的给定。
      • @user2908232 Stackoverflow 旨在为人们提供指导。帮助某人实施一个坏主意并不是真正的“帮助”。
      • @user2908232 是的,这是……有充分的理由……指出某人应该如何组织数据的正确方向通常比用糟糕的代码盲目地回答问题要好得多。跨度>
      • 这不是黑客攻击。将变量列表更改为数组是最佳做法。我已经选择了第一个数组解决方案作为正确的,但是由于这完全相同,所以这也是正确的。 @David Barker,感谢您的帮助。
      【解决方案5】:

      var[i] 用于它 var 是一个数组。但在你的情况下,它不是。最好的方法是将这些值放在一个数组中,例如;

      var myvar = [0,0,0,0,0];
      

      然后使用 for 循环检查值。

      for( var i = 1;i<6; i++){
      alert(myvar[i-1]);
      }
      

      【讨论】:

        猜你喜欢
        • 2020-10-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-19
        • 2019-02-13
        相关资源
        最近更新 更多