Obtener un valor anidado de objetos de una matriz de propiedades anidadas
Tengo una situación en la que necesito comprimir dos Objetos juntos, conservando ambos valores. Puedo recorrer ambos objetos y construir una matriz de todas las claves.
var traverse = function (obj, chain) {
for (var prop in obj) {
if (obj.hasOwnProperty(prop)) {
var tempChain = [].concat(chain || []);
tempChain.push(prop);
if (typeof obj[prop] === 'object') {
traverse(obj[prop], tempChain);
}
console.log(tempChain);
}
}
};
Pasando en lo siguiente:
traverse({
'a': {
'b': 'hello world',
'b1': 'hello world 1',
'c': {
'd': 'dello'
}
}
})
Me devolverá
[a]
[a,b]
[a,b1]
[a,c]
[a, c, d]
Así que ahora tengo una matriz de propiedades anidadas en un objeto. ¿Cómo puedo acceder esencialmente a obj [[a, c, d]]? Sé que puedo resolver el problema a través de eval pero no puedo confiar en el contenido.
eval('window.' + ['a','c','d'].join('.'));
Si puedo recorrer esa matriz y verificar si la propiedad existe en ambos, construya un nuevo objeto de los valores combinados "comprimidos".