Tengo una matriz de objetos que contienen otros objetos. Por el momento, la forma en que los declaro es bastante larga. Es que hay mucho más condensan para hacer lo siguiente:Declarar una matriz de objetos que contienen objetos
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);
¿Existe una forma de declarar esta configuración que no es tan detallado, algo similair a cómo un xml sería organizada, algo así como:
data =
usa
NH
concord: 34253
foo: 3423
blah: 99523
NC
place: 23522
Uk
foo
bar: 35929
yah: 3452
No puedo averiguar cómo anidar las declaraciones de matriz sin tener que repetir constantemente los nombres de las variables.
Cómo copio el contenido de esta matriz en otra matriz independiente. Cuando lo hago, New_Countries [1] = Countries [0], supongo que la referencia del objeto se está copiando y ambos apuntan al mismo objeto. Gracias. – Themasterhimself
@Themasterhimself: para una copia profunda necesita hacerlo recursivamente usted mismo. Escriba funciones para iterar a través de matrices y objetos y pídales que se llamen recursivamente hasta que toque un número o una cadena. Úselo para (var x in y) para objetos y para (var x = 0; x
slebetman
@Themasterhimself: Es posible que algunas bibliotecas ya implementen métodos/funciones de copia profunda. Puede valer la pena buscar jQuery o guión bajo. Pero no es realmente difícil escribir uno tú mismo. – slebetman