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'])
???
asked Jan 24, 2014 at 20:34
dazzafact
2,9043 gold badges35 silver badges51 bronze badges
2 Answers 2
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"
}
}
}
answered Jan 24, 2014 at 20:49
rampion
89.6k49 gold badges209 silver badges321 bronze badges
Sign up to request clarification or add additional context in comments.
Comments
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 ..
answered Jan 24, 2014 at 20:51
Ken Kin
4,7253 gold badges43 silver badges77 bronze badges
Comments
lang-js
pushto an array, not an object. You would need to makeitemsan array, and then do$tmp['items'].push($tmp2);