6

I want to insert a item to specified index of an empty Array. I saw there is Array.prototype.splice method. However, if I use splice on empty Array, it just add item to end off Array as shown below.

var a = [];
a.splice(3,0,"item-3");
console.log(a); //returns ['item-3']

What I want to accomplish is to have array as given below.

console.log(a); //returns [,,,'item-3']
or
console.log(a); //returns [undefined,undefined,undefined,'item-3']

Thanks for your help.

Edit: I saw the question on How to insert an item into an array at a specific index? but, it did not explain how to insert to specified index of empty array.

ysnfrk
  • 89
  • 1
  • 10
  • Do you mean `a[3] = "item-3"`? This is not a good idea to do this though. – Yeldar Kurmangaliyev Jan 04 '19 at 12:21
  • Why it is not good idea to do ? I mean of course there will be undefined items but other than that is there any bad side ? @YeldarKurmangaliyev – ysnfrk Jan 04 '19 at 12:33
  • Possible duplicate of [How to insert an item into an array at a specific index?](https://stackoverflow.com/questions/586182/how-to-insert-an-item-into-an-array-at-a-specific-index) – Shahnewaz Jan 04 '19 at 12:37
  • 2
    @ysnfrk Because this is not how an array is supposed to be used. If you do `var a = []; a[100000] = true;`, then `a.length` will be 100001. Also, most of algorithms rely on this length, which can cause many problems. Just use object \ set if you need key-value association array. – Yeldar Kurmangaliyev Jan 04 '19 at 14:29
  • @ysnfrk have you got any approach for this. I would like to know about it. – Amit Singh Jun 05 '21 at 08:51

3 Answers3

15

Just use the index and do the assignment directly:

var a = [];

a[3] = "item-3";

console.log(a);
T.J. Crowder
  • 1,031,962
  • 187
  • 1,923
  • 1,875
Nina Scholz
  • 376,160
  • 25
  • 347
  • 392
6

Coming in for the ES6 solution:

[...Array(3), 'item-3']
// [undefined, undefined, undefined, "item-3"]
Simon Márton
  • 332
  • 3
  • 10
0

Assign the value to the index like this:

var a = [];

a[3] = "item-3"; //3 is the index

console.log(a);
Ender Dangered
  • 103
  • 1
  • 8