If they're placed in layout, you could try keeping track of the zombies/items NOT to spawn.
For example, whenever a zombie is destroyed, add the zombie UID to an array. When the player enters a room, at the start of the layout, loop through the array and destroy any zombies with UID on that list. The same can be done with items.
There's probably a more efficient way to do this (like creating one array per layout), but the general idea here is to keep track of just what's been destroyed.