No utilice for...in
para arreglos. Lo mejor es usar el lazo tradicional for
en ese caso.
La razón es porque for...in
mira la matriz como un objeto, y por lo tanto las propiedades como indexOf
o length
se pueden incluir en el bucle. El bucle normal for
solo trata con teclas numéricas, por lo que se evita este problema.
En una nota al margen, las propiedades no deseadas pueden aparecer al iterar también sobre objetos planos (como otros han notado, las propiedades que agregue al prototipo del objeto aparecerán). Se puede evitar esto mediante la escritura de sus for...in
bucles de esta manera:
var obj = { ... };
for (var prop in obj) {
if (obj.hasOwnProperty(prop)) {
var item = obj[prop];
...
}
}
Para ser claro, sin embargo: que todavía no debe utilizar este método en las matrices.
gracias! Ninjas ... – randomor