Одним из возможных решений может быть использование цикла forEach
.
const mainObject = { title: 'some title', topics: { topic1: { path: '', id: 1 }, topic2: { path: '', id: 2 } } }
const arrayOfKeys = ['topics', 'topic1'];
function getObjectByKeys(arrayOfKeys) {
let result = Object.assign({}, mainObject);
arrayOfKeys.forEach(function(key){
result = result[key];
});
return result;
}
console.log(getObjectByKeys(arrayOfKeys));
Другой подход заключается в использовании метода reduce
путем передачи функции callback
в качестве аргумента.
const mainObject = { title: 'some title', topics: { topic1: { path: '', id: 1 }, topic2: { path: '', id: 2 } } }
const arrayOfKeys = ['topics', 'topic1'];
getObjectByKeys = (arrayOfKeys) => {
return arrayOfKeys.reduce((obj, item) => obj[item], mainObject);
}
console.log(getObjectByKeys(arrayOfKeys));