首页 > 解决方案 > 有没有办法使用字符串为对象的深层嵌套属性赋值?

问题描述

所以假设有一个对象a

let a = {
  b: {
    c: {
      d: {
        e: null
      }
    }
  }
}

任务是创建一个方法,该方法将a通过属性路径为 -object 的属性分配一个值,该路径将作为字符串传递给方法。所以预期的结果是:

方法

let magicMethod = ({prop, value}) => {
  /*magic here*/
}

称呼:

magicMethod({prop: 'b.c.d.e', value: true})

结果(console.log(a)):

{
  b: {
    c: {
      d: {
        e: true
      }
    }
  }
}

它应该适用于所有深度级别,因此调用magicMethod({prop: 'b.c', value: true})应该将a-object 修改为:

{
  b: {
    c: true
  }
}

有没有办法通过递归或其他方式实现这种行为?

到目前为止,我确实设法用这种方法实现了它: 在此处输入图像描述

但它不灵活,老实说,我一点也不喜欢它 :) 我觉得有一些更聪明的解决方案。

标签: javascriptalgorithmobjectrecursion

解决方案


推荐阅读