Immutable Deep Update using Nested Maps:
When working with nested data structures like arrays of objects (e.g., departments with employees), it's important to update values immutably β without modifying the original data.
This pattern uses nested .map()
functions to update specific fields deep within the structure.
Change an employee's skill from "Go"
to "Rust"
in a nested departments array.
const departments = [
{
name: "Engineering",
employees: [
{ name: "Alice", skills: ["JavaScript", "Python", "Recruitment"] },
{ name: "Bob", skills: ["Java", "Go"] }
]
},
{
name: "HR",
employees: [
{ name: "Charlie", skills: ["Recruitment"] }
]
}
];
Update Bobβs "Go"
skill to "Rust"
immutably (without changing the original array).
const updatedDepartments = departments.map(department => ({
...department,
employees: department.employees.map(employee => {
if (employee.name === "Bob") {
return {
...employee,
skills: employee.skills.map(skill =>
skill === "Go" ? "Rust" : skill
)
};
}
return employee;
})
}));
console.log(updatedDepartments);
Output:
[
{
name: "Engineering",
employees: [
{ name: "Alice", skills: ["JavaScript", "Python", "Recruitment"] },
{ name: "Bob", skills: ["Java", "Rust"] }
]
},
{
name: "HR",
employees: [
{ name: "Charlie", skills: ["Recruitment"] }
]
}
]
- β Keeps original data intact (no mutations).
- β Scales well for updating deep nested objects.
- β Useful in React state updates or functional programming