myf*_*wik 12 javascript arrays
我有一个包含其他对象的对象数组.目前我宣布他们的方式很长.是否有更多浓缩方式来执行以下操作:
function city(name,population)
{
this.name = name;
this.population = population;
}
function state(name)
{
this.name= name;
this.cities = new Array();
}
function country(name)
{
this.name= name;
this.states = new Array();
}
Countries = new Array();
Countries[0] = new Country("USA");
Countries[0].states[0] = new State("NH");
Countries[0].states[0].cities[0] = new city("Concord",12345);
Countries[0].states[0].cities[1] = new city("Foo", 456);
...
Countries[3].states[6].cities[35] = new city("blah", 345);
Run Code Online (Sandbox Code Playgroud)
有没有办法声明这个设置不是那么冗长,类似于xml如何布局,类似于:
data =
usa
NH
concord: 34253
foo: 3423
blah: 99523
NC
place: 23522
Uk
foo
bar: 35929
yah: 3452
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚如何嵌套数组声明而不必经常重复变量名称.
sle*_*man 17
使用对象和数组文字:
var data = {
usa : {
NH : {
concord: 34253,
foo: 3423,
blah: 99523
},
NC : {
place: 23522
}
},
uk : {
foo : {
bar: 35929,
yah: 3452
}
}
}
Run Code Online (Sandbox Code Playgroud)
或者更直接地反映原始代码的内容:
var Countries = [
{
name : 'USA',
states : [
{
name : 'NH',
cities : [
{
name : 'Concord',
population : 12345
},
{
name : "Foo",
population : 456
}
/* etc .. */
]
}
]
},
{
name : 'UK',
states : [ /* etc... */ ]
}
]
Run Code Online (Sandbox Code Playgroud)
注意:在javascript中,var foo = []
完全等同于(和首选的写入方式)var foo = new Array()
.另外,var foo = {}
是一样的var foo = new Object()
.
注意:不要忘记在单独的子对象之间添加逗号.