I'm trying to format an array in javascript with data pulled from a database so that the ID of the row is the index of the array, so the data
ID | Data
----------------------------
1 | hi
2 | more data
4 | junk data
8 | hello world
12 | h3ll0
would look like
array:
[1] = hi
[2] = more data
[4] = junk data
[9] = hello world
[12] = h3ll0
i have tried using array.splice(id,1,data)
but when i console.log the array the indexes don't match, almost as if because an index isn't exist before it just appends the value at the end of the array.
So i am wondering how i can go about adding data to an array at any index so i can create an array as shown in the example
I'm trying to format an array in javascript with data pulled from a database so that the ID of the row is the index of the array, so the data
ID | Data
----------------------------
1 | hi
2 | more data
4 | junk data
8 | hello world
12 | h3ll0
would look like
array:
[1] = hi
[2] = more data
[4] = junk data
[9] = hello world
[12] = h3ll0
i have tried using array.splice(id,1,data)
but when i console.log the array the indexes don't match, almost as if because an index isn't exist before it just appends the value at the end of the array.
So i am wondering how i can go about adding data to an array at any index so i can create an array as shown in the example
Share Improve this question asked Apr 3, 2014 at 23:09 Memor-XMemor-X 2,9706 gold badges35 silver badges58 bronze badges 2-
What's wrong with simple
arr[1] = 'hi'
? – raina77ow Commented Apr 3, 2014 at 23:12 - Don't use an array this way - use an object instead. – Adam Jenkins Commented Apr 3, 2014 at 23:13
2 Answers
Reset to default 15Believe it or not, you just assign to it:
var a = []; // Creates array
a[1] = "hi";
a[2] = "more data";
a[4] = "junk data";
a[9] = "hello world";
a[12] = "h3ll0";
This is because standard arrays in JavaScript aren't really arrays at all, they're just objects with some special behavior. Array "entries" are just object properties. And in JavaScript, if you assign to an object property that doesn't exist yet, it gets created.
You only need an array for this if you plan to use array features, like length
(which will be 13
in the above example; it's always one higher than the highest index, or it's the value you give it if you assign to length
directly), or splice
, etc. If you don't plan to use those features, you can just use an object (var a = {};
rather than var a = [];
). Nothing else above changes.
Don't use an array this way - if you have one element at index 9 then indicies 0-8 will then be have values of undefined
when you loop over it which can be very confusing, especially if you try to determine the length of your array.
What you want to do be using, is an object with numeric keys.
var x = {};
x.[id] = data;