I'm trying to update an deeply nested object without overriding existing properties, but can't find an elegant way to do this, for example:
const data = {
  items: {
    one: {
      active: false,
      id: '123'
    },
    two: {
      active: true
    }
  }
}
const updatedData = {
  items: {
     one: {
        active: true
     }
  }
}
The end result should be:
{
  items: {
    one: {
      active: true,
      id: '123'
    },
    two: {
      active: true
    }
  }
}
However, using Object.assign or spread operator, will replace items.one with only {active: true} and not retain the id.  Is there a way to do this without recursively going through the object?
 
     
    