6

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

asked Apr 3, 2014 at 23:09
2
  • What's wrong with simple arr[1] = 'hi'? Commented Apr 3, 2014 at 23:12
  • Don't use an array this way - use an object instead. Commented Apr 3, 2014 at 23:13

2 Answers 2

15

Believe 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.

answered Apr 3, 2014 at 23:11
Sign up to request clarification or add additional context in comments.

Comments

2

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;
answered Apr 3, 2014 at 23:15

1 Comment

"if you have one element at index 9 then indicies 0-8 will then have values of undefined" Not really. Those entries don't exist at all. But if you try to retrieve an object property that doesn't exist (whether it's x[27] or x.foobar), the result of the retrieval operation is undefined. But that's not the same thing as the property existing and having the value undefined.

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.