参见英文答案 >
Problems with JavaScript “for in” loop3个
我刚刚经历了最奇怪的事情,这是我实际使用的代码:
我刚刚经历了最奇怪的事情,这是我实际使用的代码:
for (iter in data.List) { console.log(iter); }
正如您所料,日志应该给出每行的数量(0,1,2 ……),而不是它给我这个:
0 1 2 remove
知道我的数组只有3行
有没人有人想过这个?
解决方法
基本上,问题是你使用for in循环遍历你的数组,这不是通过数组的iteratung.它的目的是迭代对象的所有属性,显然在你的数组上有一个名为remove的属性.
有关为什么在数组时出错的更多详细信息,请参阅Why is using “for…in” with array iteration a bad idea?.
作为解决方案,我建议使用索引for循环.这种类型的循环不关心属性,因此你很好.所以它基本上归结为非常经典:
for (var i = 0; i < data.List; i++) { console.log(data.List[i]); }
顺便说一下:除非是构造函数,否则不应该在JavaScript中使用大写字母.因此它应该是data.list.
PS:关于数组和(错误)使用它们的一个很好的阅读,阅读Fun with JavaScript Arrays,一个非常好的阅读.