我有一个对象列表(data
),我这样做:
for (var i = 0; data.length < i; i++) {...}
但它不起作用。当我使用它时:
for (var i in data) {
它有效,但循环三次,当只有一个对象时,在这种情况下i
是:0
(正确),indexOfObject
(wtf),{{1 (wtf)。
为什么我的第一个表达不起作用?这两个值removeItem
值是多少?我做错了吗?
编辑:由于这件事情有点复杂,我能做的最好就是提供我的数据对象的屏幕截图:screenshot
答案 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++) {...}
尝试它会起作用。