Why is the value of
(new Array(2)).map(function (x, i, a) { return i })
[undefined, undefined] instead of [0, 1]?
Why is the value of
(new Array(2)).map(function (x, i, a) { return i })
[undefined, undefined] instead of [0, 1]?
new Array(2)
generates a sparse array - with no values, but of length 2. It is equivalent to [,,]
.
Now, Array's .map()
method is specified to leave out uninitialised/deleted indices, so you just get back another empty array.
Related question on what you want to do: How to write List/Array comprehensions in JavaScript
when you specify the size of an javascript array it fills it with undefined values