JS: Array Constructor
new Array(…)
→ same asArray(…)
.Array()
→ create a empty array. Same as[]
.Array(n)
→ if n is 0, 1, 2, 3, etc. It creates a sparse array with n slots. Same asy=[];y.length=n
. [see JS: Sparse Array] Note, this is different than each element beingundefined
. If n is negative, it's a RangeError.Array(x)
→ x is not a integer. Result is a array with 1 element x.Array(a1, a2 …)
→ same as[a1,a2…]
.
warning: new Array(9)
does not actually create any element in the array at all.
// 「new Array(2)」 does not create any elements, only sets length const r1 = new Array(2); console.log(r1.length); // 2 console.log(Object.getOwnPropertyNames(r1)); // [ 'length' ] // compare to, // here's array of 2 items, both are undefined const r2 = [undefined, undefined]; console.log(r2.length); // 2 console.log(Object.getOwnPropertyNames(r2)); // [ '0', '1', 'length' ]
If you create a array by new Array(4)
, then use the array method map
to fill in, it doesn't work.
// creating array by map this way doesn't work const a1 = new Array(3); const a2 = a1.map( (() => "v")); console.log(a2); // [ <3 empty items> ] // expected ['v','v','v',] console.log ( a2[0] === undefined); // true
Tip: avoid using array constructor. Anything it does can be done better in other ways. Use literal array expression []
then use array method push.
[see JS: Array.prototype.push]
Or use
Array.of
[see JS: Array.of]
Range Function for Creating Array
JS Array
If you have a question, put $5 at patreon and message me.