Obiecte încorporate și Array-uri în Obiecte
Obiectele pot conține alte obiecte ca proprietăți. De exemplu, avem un obiect care reprezintă o țară, cu diverse proprietăți. Una dintre aceste proprietăți poate reprezenta capitala. Totuși, pentru capitală, putem defini și alte proprietăți, cum ar fi numele, populația și anul înființării:
const country = {
name: "Germania",
language: "germană",
capital:{
name: "Berlin",
population: 3375000,
year: 1237
}
};
console.log("Capitala:", country.capital.name); // Berlin
console.log("Populație:", country["capital"]["population"]); // 3375000
console.log("Anul înființării:", country.capital["year"]); // 1237
Rezultatul în consolă:
Capitala: Berlin Populație: 3375000 Anul înființării: 1237
Pentru a accesa proprietățile acestor obiecte înglobate, putem utiliza atât notația punctată, cât și referirea la elemente asemănătoare cu array-ul:
country.capital.name
sau
country["capital"]["population"]
De asemenea, este permisă utilizarea unei combinații de ambele:
country.capital["year"]
Proprietățile pot fi și array-uri, inclusiv array-uri de alte obiecte:
const country = {
name: "Elveția",
languages: ["germană", "franceză", "italiană"],
capital:{
name: "Bern",
population: 126598
},
cities: [
{ name: "Zürich", population: 378884},
{ name: "Geneva", population: 188634},
{ name: "Basel", population: 164937}
]
};
// Afișează toate elementele din country.languages
console.log("Limbi oficiale ale Elveției");
for(const lang of country.languages){
console.log(lang);
}
console.log("\n"); // pentru separarea limbilor de orașe
// Afișează toate elementele din country.cities
console.log("Orașe din Elveția");
for(const city of country.cities){
console.log(city.name);
}
În obiectul country, avem o proprietate numită languages, care conține un array de string-uri, precum și o proprietate numită cities, care stochează un array de obiecte similare.
Cu aceste array-uri, putem lucra asemănător ca cu oricare altele, de exemplu, le putem parcurge cu ajutorul unui ciclu for. În timpul parcurgerii array-ului de obiecte, fiecare element curent va reprezenta un obiect separat, astfel încât putem accesa proprietățile și metodele sale:
for(const city of country.cities){
console.log(city.name);
}
Sau, pentru al parcurge, am putea utiliza un alt tip de buclă for și, de asemenea, să trecem prin toate elementele array-ului:
for(let i=0; i < country.cities.length; i++){
console.log(country.cities[i].name);
}
În final, browser-ul va afișa conținutul acestor array-uri:
Limbi oficiale ale Elveției germană franceză italiană Orașe din Elveția Zürich Geneva Basel