Javascript - 为什么我的数组循环不工作?

时间:2013-03-24 19:17:03

标签: javascript

我有一个对象列表(data),我这样做:

for (var i = 0; data.length < i; i++) {...}

但它不起作用。当我使用它时:

for (var i in data) {

它有效,但循环三次,当只有一个对象时,在这种情况下i是:0(正确),indexOfObject(wtf),{{1 (wtf)。

为什么我的第一个表达不起作用?这两个值removeItem值是多少?我做错了吗?

编辑:由于这件事情有点复杂,我能做的最好就是提供我的数据对象的屏幕截图:screenshot

3 个答案:

答案 0 :(得分:4)

检查你的for循环语句,循环的条件(data.length < i)是相反的,可能永远不会完成。

应该是:

   for (var i = 0; i < data.length;  i++)
   {
      // Now write your code 
   }

答案 1 :(得分:1)

如果你真的有数组 -

var a = ["hello", "world"];

var a = new Array();
a[0] = "hello";
a[1] = "world";

然后你的第一个循环(带索引变量)是正确的。您应该使用in样式for循环来迭代对象的属性,但是使用数组的数字索引属性的索引样式。

编辑 - oops好的电话@Sachin - 你的for循环测试是倒退的。

如果您有一个普通对象,并且想要遍历其属性,但跳过对象原型链上的属性,则可以执行以下操作:

for (var name in obj) {
  if (obj.hasOwnProperty(name)) {
    var value = obj[name];
    // do stuff
  }
}

答案 2 :(得分:0)

我可以从上面给出的代码中看到,你在for循环中给出了错误的条件。首先,将变量i初始化为0,然后检查data.length&lt; 0。任何长度值都可以小于零吗?

您可以像以下一样使用它: -

  for (var i = 0; i<data.length; i++) {...}

尝试它会起作用。