HiveBrain v1.2.0
Get Started
← Back to all entries
patternjavascriptCritical

Why is using "for...in" for array iteration a bad idea?

Submitted by: @import:stackoverflow-api··
0
Viewed 0 times
arrayiterationwhyforusingideabad

Problem

I've been told not to use for...in with arrays in JavaScript. Why not?

Solution

The reason is that one construct:



var a = []; // Create a new empty array.
a[5] = 5; // Perfectly legal JavaScript that resizes the array.

for (var i = 0; i



can sometimes be totally different from the other:



var a = [];
a[5] = 5;
for (var x in a) {
// Shows only the explicitly set index of "5", and ignores 0-4
console.log(x);
}

/* Will display:
5
*/



Also consider that JavaScript libraries might do things like this, which will affect any array you create:



// Somewhere deep in your JavaScript library...
Array.prototype.foo = 1;

// Now you have no idea what the below code will do.
var a = [1, 2, 3, 4, 5];
for (var x in a){
// Now foo is a part of EVERY array and
// will show up here as a value of 'x'.
console.log(x);
}

/* Will display:
0
1
2
3
4
foo
*/`

Context

Stack Overflow Q#500504, score: 1741

Revisions (0)

No revisions yet.