dazzafact
dazzafact

Reputation: 2860

Create Elements of an Object in a Loop

i want to create nested elements of an Object in a loop this works manuel :

$tmp={ "items": {
            "key1": {"name": "alpha"},
            "key2": {"name": "bravo"},
            "key3": {"name": "charlie"}
             }
 }
         alert($tmp['items']['key2']['name'])

But how can i create all vals in a loop??? something like:

 for (var x = 0; x < 100; x++) {
   $tmp2={"key"+x: {"name": "name"+x}}
   $tmp.push($tmp2)

  }
        alert($tmp['items']['key0']['name'])

???

Upvotes: 1

Views: 87

Answers (2)

Ken Kin
Ken Kin

Reputation: 4693

You can do this:

var $tmp={ 'items': {} };

for (var x=0; x<100; x++) {
    $tmp['items']['key'+x]={ 'name': 'name'+x };
}

alert($tmp['items']['key0']['name']);

But the value of $tmp.items.keyN.name is just nameN seems meaningless ..

Upvotes: 1

rampion
rampion

Reputation: 89053

Declare the container for your key/value pairs outside the loop, then use the [] syntax to add keys to the container inside your loop.

 $tmp = { "items": {} };
 for (var x = 0; x < 10; x++) {
   // $tmp.items is equivalent to $temp["items"]
   $tmp.items["key"+x] = { "name" : "name" + x };
 }

This results in:

{
  "items": {
    "key0": {
      "name": "name0"
    },
    "key1": {
      "name": "name1"
    },
    "key2": {
      "name": "name2"
    },
    "key3": {
      "name": "name3"
    },
    "key4": {
      "name": "name4"
    },
    "key5": {
      "name": "name5"
    },
    "key6": {
      "name": "name6"
    },
    "key7": {
      "name": "name7"
    },
    "key8": {
      "name": "name8"
    },
    "key9": {
      "name": "name9"
    }
  }
}

Upvotes: 3

Related Questions