Digital Brent
Digital Brent

Reputation: 1285

Need help building complex JS object

I'm trying to construct an array in JavaScript, but I'm not sure of the correct way to do it, or if this type of array is even possible...

Lets say I have a key for each item in the array starting with 'a' and ending with 'z'. For each item, the array key will correspond with another multidimensional array. These new multidimensional arrays are a series of coordinates (x and y). Each item in the original array can have many sets of coordinates. For example:

enter image description here

How can I construct such an array with Javascript? What is the proper syntax?

Upvotes: 1

Views: 67

Answers (2)

James Hay
James Hay

Reputation: 7315

Just to add another possible option to your list, on the same lines as @SMcCrohan's answer, mixing objects and arrays.

var coords = {
    a: [{
            x: 20,
            y: 15
        },
        {
            x: 25,
            y: 17
        }],
    b: [{
            x: 10,
            y: 30
        }],

    ....
};

This assumes you will always use coordinates x and y, It means you can access the values like so:

var value1 = coords.a[1].x; // 25
var value2 = coords.b[0].y; // 30

Upvotes: 3

S McCrohan
S McCrohan

Reputation: 6693

For the data you've provided:

var arr = {
  a: [[20,15],[25,17],[10,45]],
  b: [[10,33],[12,2],[14,9],[72,103],[88,12]],
  c: [[2,2],[41,21]],
  d: [[0,0],[21,2],[44,44],[19,99],[1,1],[100,100]],
  e: [[1,1],
  f: [[3,40],[41,86]]
}

The first structure you want, a keyed array, isn't an array in JavaScript - it's an object. Objects contain key-value pairs. In this case, the values are arrays, and the objects in those arrays are themselves arrays.

An important thing to note here if you're coming from another language that defines 'regular' multi-dimensional arrays is that there is no expectation or guarantee that the 'rows' of this structure are all the same length.

Upvotes: 2

Related Questions