Получение вложенного значения Objects из массива вложенных свойств
У меня есть ситуация, когда мне нужно сжать два объекта вместе, сохраняя оба значения. Я могу перебрать оба объекта и создать массив всех ключей.
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);
}
}
};
Проходя в следующем:
traverse({
'a': {
'b': 'hello world',
'b1': 'hello world 1',
'c': {
'd': 'dello'
}
}
})
Вернет мне:
[a]
[a,b]
[a,b1]
[a,c]
[a, c, d]
Итак, теперь у меня есть массив вложенных свойств в объекте. Как я могу получить доступ к obj [[a, c, d]]? Я знаю, что могу решить проблему с помощью eval, но я не могу доверять контенту.
eval('window.' + ['a','c','d'].join('.'));
Если я смогу пройтись по этому массиву и проверить, существует ли свойство в обоих из них, то создам новый объект из объединенных «сжатых» значений.