Bird
Raised Fist0
Javascriptprogramming~5 mins

Nested objects in Javascript

Choose your learning style10 modes available
Introduction

Nested objects help organize related information inside other objects, like boxes inside boxes. This makes data easier to find and use.

When you want to store details about a person, including their address and contact info inside one object.
When you have a product with multiple features and specifications grouped together.
When you want to represent a menu with categories and items inside each category.
When you need to keep track of a book with chapters and each chapter has pages.
When you want to model a company with departments and each department has employees.
Syntax
Javascript
const obj = {
  key1: value1,
  key2: {
    nestedKey1: nestedValue1,
    nestedKey2: nestedValue2
  }
};

Objects can hold other objects as values, creating layers.

You access nested values by chaining keys with dot notation or brackets.

Examples
This object has a nested object address inside person.
Javascript
const person = {
  name: "Alice",
  address: {
    city: "Wonderland",
    zip: "12345"
  }
};
Here, specs is a nested object holding product details.
Javascript
const product = {
  id: 101,
  specs: {
    weight: "1kg",
    color: "red"
  }
};
This shows multiple nested objects inside menu for different meals.
Javascript
const menu = {
  breakfast: {
    item1: "Pancakes",
    item2: "Coffee"
  },
  lunch: {
    item1: "Sandwich",
    item2: "Juice"
  }
};
Sample Program

This program creates a user object with nested profile and contact objects. It then prints the user's info by accessing nested keys.

Javascript
const user = {
  username: "bob123",
  profile: {
    firstName: "Bob",
    lastName: "Smith",
    contact: {
      email: "bob@example.com",
      phone: "555-1234"
    }
  }
};

console.log(`User: ${user.username}`);
console.log(`Name: ${user.profile.firstName} ${user.profile.lastName}`);
console.log(`Email: ${user.profile.contact.email}`);
console.log(`Phone: ${user.profile.contact.phone}`);
OutputSuccess
Important Notes

You can use either dot notation (obj.key) or bracket notation (obj["key"]) to access nested values.

Be careful if a nested object might not exist; accessing deeper keys without checking can cause errors.

Nested objects help keep data organized but too many layers can make code harder to read.

Summary

Nested objects store objects inside other objects to organize data.

Access nested values by chaining keys with dots or brackets.

Use nested objects to group related information clearly.

Practice

(1/5)
1. What is a nested object in JavaScript?
easy
A. An array inside an object
B. An object inside another object
C. A function inside an object
D. A string inside an object

Solution

  1. Step 1: Understand object structure

    An object can hold many types of values, including other objects.
  2. Step 2: Define nested object

    A nested object means one object is stored as a value inside another object.
  3. Final Answer:

    An object inside another object -> Option B
  4. Quick Check:

    Nested object = object inside object [OK]
Hint: Nested means inside another object, like boxes in boxes [OK]
Common Mistakes:
  • Thinking nested means array inside object
  • Confusing functions with objects
  • Assuming nested means string inside object
2. Which of the following is the correct syntax to access the value 42 in this nested object?
const data = { info: { age: 42 } };
easy
A. data.info.age
B. data[info][age]
C. data['info'.'age']
D. data.info['age']()

Solution

  1. Step 1: Access nested keys with dot notation

    Use dot notation to access nested object properties: data.info.age.
  2. Step 2: Check syntax correctness

    data[info][age] is wrong because keys must be strings or variables; data['info'.'age'] is invalid syntax; data.info['age']() tries to call a value as function.
  3. Final Answer:

    data.info.age -> Option A
  4. Quick Check:

    Dot notation for nested keys = data.info.age [OK]
Hint: Use dot notation for nested keys like data.key1.key2 [OK]
Common Mistakes:
  • Using brackets without quotes for keys
  • Trying to call a property as a function
  • Incorrect string concatenation in keys
3. What will be the output of this code?
const user = { name: 'Alice', contact: { email: 'alice@example.com', phone: '1234' } };
console.log(user.contact.email);
medium
A. 'alice@example.com'
B. '1234'
C. 'contact'
D. undefined

Solution

  1. Step 1: Identify nested property access

    user.contact.email accesses the 'email' property inside the 'contact' object.
  2. Step 2: Check the value of user.contact.email

    The value is the string 'alice@example.com'.
  3. Final Answer:

    'alice@example.com' -> Option A
  4. Quick Check:

    Access nested email = 'alice@example.com' [OK]
Hint: Follow the chain: object.property.property to get nested value [OK]
Common Mistakes:
  • Accessing wrong property like user.email
  • Using wrong quotes causing syntax error
  • Expecting phone instead of email
4. Find the error in this code snippet:
const book = { title: 'JS Guide', author: { firstName: 'John', lastName: 'Doe' } };
console.log(book.author.firstName());
medium
A. Incorrect object declaration
B. Missing semicolon after object
C. firstName is not a function
D. author property does not exist

Solution

  1. Step 1: Check property type

    book.author.firstName is a string, not a function.
  2. Step 2: Identify the error in calling it

    Using parentheses () tries to call it as a function, causing a TypeError.
  3. Final Answer:

    firstName is not a function -> Option C
  4. Quick Check:

    Calling string as function causes error [OK]
Hint: Don't add () after properties unless they are functions [OK]
Common Mistakes:
  • Calling string property as function
  • Ignoring error message
  • Assuming missing semicolon causes error
5. Given this nested object:
const company = {
  name: 'TechCorp',
  departments: {
    sales: { employees: 10 },
    development: { employees: 25 },
    hr: { employees: 5 }
  }
};

// How to get total employees in all departments?

Which code correctly calculates total employees?
hard
A. company.departments.sales + company.departments.development + company.departments.hr
B. company.departments.employees.sales + company.departments.employees.development + company.departments.employees.hr
C. company.departments['employees'].sales + company.departments['employees'].development + company.departments['employees'].hr
D. company.departments.sales.employees + company.departments.development.employees + company.departments.hr.employees

Solution

  1. Step 1: Understand object structure

    Each department is an object inside company.departments, with an employees property holding a number.
  2. Step 2: Access employees count correctly

    Access employees by chaining: company.departments.sales.employees, etc., then add them.
  3. Step 3: Check incorrect options

    Adding the department objects directly (like company.departments.sales) leads to summing objects instead of numbers; accessing employees as a property of departments fails because it doesn't exist on departments--each department has its own.
  4. Final Answer:

    company.departments.sales.employees + company.departments.development.employees + company.departments.hr.employees -> Option D
  5. Quick Check:

    Sum employees by chaining keys correctly [OK]
Hint: Add numbers by chaining keys: obj.key1.key2 + obj.key3.key4 [OK]
Common Mistakes:
  • Adding objects instead of numbers
  • Wrong property order
  • Using wrong key names
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard