Перебирать массив ключей с помощью .reduce
, где аккумулятором является текущий вложенный объект:
let object = {
one: {
two: {
three: {
prop: 'val'
}
}
}
};
const props = ['one', 'two', 'three', 'prop'];
const nestedVal = props.reduce((a, prop) => a[prop], object);
console.log(nestedVal);
Чтобы присвоить значение в той же точке, сначала откройте последний ключ, используйте тот же трюк reduce
, чтобы добраться до последнего объекта, и назначьте свойству на последнем ключе в скобках:
let object = {
one: {
two: {
three: {
prop: 'val'
}
}
}
};
const props = ['one', 'two', 'three', 'prop'];
const lastKey = props.pop();
const nestedObj = props.reduce((a, prop) => a[prop], object);
nestedObj[lastKey] = 'newVal';
console.log(object);