Bird
Raised Fist0
Javascriptprogramming~20 mins

Nested objects in Javascript - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
πŸŽ–οΈ
Nested Objects Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Accessing nested object properties
What is the output of the following code?
Javascript
const data = {
  user: {
    id: 101,
    profile: {
      name: "Alice",
      age: 30
    }
  }
};

console.log(data.user.profile.name);
Aundefined
B"Alice"
Cnull
DTypeError
Attempts:
2 left
πŸ’‘ Hint
Look at how to access properties inside nested objects using dot notation.
❓ Predict Output
intermediate
2:00remaining
Modifying nested object values
What will be the output after running this code?
Javascript
const obj = {
  a: {
    b: {
      c: 5
    }
  }
};

obj.a.b.c = 10;
console.log(obj.a.b.c);
A10
Bundefined
C5
DTypeError
Attempts:
2 left
πŸ’‘ Hint
Think about how assignment works on nested objects.
❓ Predict Output
advanced
2:00remaining
Accessing nested object with optional chaining
What is the output of this code snippet?
Javascript
const user = {
  name: "Bob",
  address: {
    city: "New York"
  }
};

console.log(user.address?.street);
Anull
BTypeError
C"" (empty string)
Dundefined
Attempts:
2 left
πŸ’‘ Hint
Optional chaining returns undefined if the property does not exist.
❓ Predict Output
advanced
2:00remaining
Deeply nested object property count
How many properties does the object 'data' have at the deepest level?
Javascript
const data = {
  level1: {
    level2: {
      level3: {
        a: 1,
        b: 2,
        c: 3
      }
    }
  }
};

console.log(Object.keys(data.level1.level2.level3).length);
A0
B1
C3
DTypeError
Attempts:
2 left
πŸ’‘ Hint
Count the keys at the deepest nested object.
❓ Predict Output
expert
2:00remaining
Merging nested objects with spread operator
What is the output of this code?
Javascript
const obj1 = { a: 1, b: { c: 2 } };
const obj2 = { b: { d: 3 }, e: 4 };

const merged = { ...obj1, ...obj2 };
console.log(merged.b.c);
Aundefined
B3
C2
DTypeError
Attempts:
2 left
πŸ’‘ Hint
Spread operator does a shallow merge, so nested objects get replaced, not merged.

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