RobertG
RobertG

Reputation: 1

Naming objects inside of an array dynamically

I'm quite new to JavaScript and programming in general and figured I'd hone my abilities by working on a small project. The idea is that I have a form for information on an event, an input for the name, date, time and a small thumbnail image.

I want each event to be an object inside of an array, so I would have something like:

var concerts = {};

for (var i = 1; i < 11; i++) {
    window["concert"+i] = new Object();
}

and the array would end up being something:

var concerts = [concert1, concert2, concert3]

and so on.

How could I get this loop to work so that it would take the 3 parameters and create a new object in the array named 'concert'+i? Thanks for reading!

Upvotes: 0

Views: 66

Answers (2)

cezar
cezar

Reputation: 12012

First you declare a variable concerts of type object. But you want an array. That first line makes your code very confusing.

You have to start with an empty array:

var concerts = []; // alternatively: new Array();

In the end you'd like to have a structure like this:

[
    { /* object 1 */ },
    { /* object 2 */ }
]

Now you can run a foor-loop and populate the array:

for (var i = 0; i <= 10; i++) {
    concerts.push({['concert' + i]: {}});
}

This will return something like:

[
    {'concert0': {}},
    {'concert1': {}},
    // skipped
    {'concert10': {}}
]

Later you can populate the objects. This is however not a very nice style. Maybe you should reconsider if it is really necessary to give a name to every object like concert0...10.

Go rather for:

var concerts = [
    {
        'name': 'concert0',
        'location': 'somewhere'
    }
    // continue with other objects
];

Upvotes: 0

Jonas Wilms
Jonas Wilms

Reputation: 138267

Concerts must be an array:

var concerts = [];

for (var i = 0; i < 10; i++) {
  concerts[i] = {
    //maybe also giveit a name if you want to:
    name:"concert"+i
  };
}

You can access it like this:

concerts[0].name="Wacken";//first concert...

Note that this:

window["concert"+i] = new Object();

is very bad style...

Upvotes: 3

Related Questions