这似乎是显而易见的,但我无法弄清楚如何缩短代码中多个位置的深度嵌套对象值的更改,而无需每次重新键入该值的键路径:
> obj = { 'key1': { 'key2': { 'key3': { 'key4': { 'key5': 'value' }}}}}
> obj.key1.key2.key3.key4.key5
'value'
<小时/>
> obj.key1.key2.key3.key4.key5 = 'changeme'
> obj.key1.key2.key3.key4.key5
'changeme'
> obj.key1.key2.key3.key4.key5 = 'changeme2'
> obj.key1.key2.key3.key4.key5
'changeme2'
最佳答案
您可以使用一些递归来迭代对象中的每个键并更新找到匹配键的位置。
const obj = { 'key1': { 'key2': { 'key3': { 'key4': { 'key5': 'value' }}}, 'key5': 'test'}}
const mutateObjectProperty = (prop, value, obj) =>
obj.constructor === Object && Object.keys(obj).forEach(key => {
if (key === prop) obj[key] = value
mutateObjectProperty(prop, value, obj[key])
})
mutateObjectProperty('key5', 'updated', obj)
console.log(obj)
关于javascript - 更改深层嵌套对象值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44381869/