javascript - 更改深层嵌套对象值

标签 javascript node.js object

这似乎是显而易见的,但我无法弄清楚如何缩短代码中多个位置的深度嵌套对象值的更改,而无需每次重新键入该值的键路径:

> 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/

相关文章:

javascript - 如何将数组添加到 Javascript 对象

ios - 对象引用未设置为 UiTable 中对象 [Xamarin,IOS] 的实例

javascript - 如何在 cssLess 中添加 JQuery 命令?

node.js - 无法让默认的 Apollo Server 缓存工作

html - 让 gulp-file-include 和 browser-sync 协同工作

C++ 管理共享对象的句柄问题

javascript - 创建 REGEX 表达式时遇到问题

javascript - 如何将 Angular UI-Grid 过滤后的完整数据导出到 Excel 中

javascript - 为什么这段代码不起作用?

node.js - 使用 docker-compose 对 Node Express 应用程序进行 Docker 化