It's a string because standard arrays in JavaScript aren't really arrays at all¹, they're objects with properties for the array entries, and object property names (keys) are strings, Symbols, or (soonish) private names.
You can't make it a number by default in a for-in
, but you can convert it to a number, or use other forms such as a standard for
or a forEach
call:
for (var key = 0; key < array.length; ++k) {
// ...
}
// ..or
array.forEach((entry, key) => {
// ...
});
Using for-in
to loop through an array is almost always an anti-pattern. See my answer here for a thorough rundown of your various options for looping through arrays.
¹ That's a post on my anemic little blog.