Ho una matrice di oggetti che contengono altri oggetti. Al momento il modo in cui li dichiaro è piuttosto lungo. È che ci sono molto più di condensa per effettuare le seguenti operazioni:Dichiarare una serie di oggetti contenenti oggetti
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);
C'è un modo per dichiarare questa configurazione che non è così verbose, qualcosa similair a come un XML sarebbe spiegate, qualcosa di simile:
data =
usa
NH
concord: 34253
foo: 3423
blah: 99523
NC
place: 23522
Uk
foo
bar: 35929
yah: 3452
Non riesco a capire come annidare le dichiarazioni di array senza dover ripetere costantemente i nomi delle variabili.
Come si copia il contenuto di questo array in un altro array indipendente. Quando lo faccio, New_Countries [1] = Paesi [0], suppongo che il riferimento all'oggetto sia stato copiato e puntino entrambi allo stesso oggetto. Grazie. – Themasterhimself
@Themasterhimself: per la copia profonda è necessario farlo in modo ricorsivo. Scrivi le funzioni per iterare attraverso matrici e oggetti e farli chiamare in modo ricorsivo fino a quando non si preme un numero o una stringa. Utilizzare per (var x in y) per gli oggetti e per (var x = 0; x
slebetman
@Themasterhimself: alcune librerie potrebbero già implementare metodi/funzioni di copia profonda. Potrebbe valere la pena cercare jQuery o underscore. Ma non è molto difficile scriverne uno da solo. – slebetman