Вам нужно pop
последний ключ из d
и использовать его на reference
в конце.
let d = ["b", "c"],
last = d.pop(),
reference = a;
path.forEach(key => reference = reference[key] || {});
reference[last] = "fe";
Вы можете использовать reduce
, чтобы получить ссылку на объект в аккумуляторе и обновите ключ last
указанным значением
function updatePath(original, path, value) {
const last = path.pop();
path.reduce((acc, key) => acc[key] || {}, original)[last] = value;
return original
}
const eg1 = {
b: {
c: null
}
}
console.log(
updatePath(eg1, ['b', 'c'], 'fe')
)
const eg2 = {
1: {
2: {
3: 'initial'
}
}
}
console.log(
updatePath(eg2, ['1', '2', '3'], 'updatedValue')
)