我刚刚经历了最奇怪的事情,这是我实际使用的代码:
for (iter in data.List) {
console.log(iter);
}
如您所料,日志应该给出每行的数量(0、1、2...),而不是给我这个:
0
1
2
remove
知道我的数组只有 3 行
有没有人遇到过这个?
我刚刚经历了最奇怪的事情,这是我实际使用的代码:
for (iter in data.List) {
console.log(iter);
}
如您所料,日志应该给出每行的数量(0、1、2...),而不是给我这个:
0
1
2
remove
知道我的数组只有 3 行
有没有人遇到过这个?
基本上,问题在于您正在使用for in
循环遍历数组,这并不意味着遍历数组。它的目的是遍历一个对象的所有属性,显然remove
你的数组上有一个属性。
有关for in
数组为什么是一个坏主意的更多详细信息,请参阅为什么将“for...in”与数组迭代一起使用是一个坏主意?.
作为解决方案,我建议使用索引for
循环。这种类型的循环不关心属性,因此你很好。所以它基本上归结为一个非常经典的:
for (var i = 0; i < data.List; i++) {
console.log(data.List[i]);
}
顺便说一句:你不应该在 JavaScript 中大写任何东西,除非它是一个构造函数。因此它应该是data.list
。
PS:关于数组和(错误)使用它们的好读物,请阅读Fun with JavaScript Arrays,非常好的读物。
是的,这就是for..in
JavaScript 的工作原理。它枚举所有对象属性(不是数组索引)。简单的解决方案:不要for..in
在数组上使用,因为那不是它的用途。