我尝试通过一个键将值设置到嵌套数组中。

我的物件看起来像

var Obj = {
  key1: {
    key2: value,
  }
}


我尝试通过key1.key2设置key1

const name = `key1.key2`

Obj[name] = value


我知道我需要像Obj['key1']['key2']那样做,但是我只能得到一个看起来像stringkey1.key2

最佳答案

如果您不介意使用库,则Ramdalodash提供帮助程序功能,使这种操作非常简单

使用Ramda(此特定操作比lodash稍微冗长,但我更喜欢Ramda而不是lodash):


const Obj = {
  key1: {
    key2: 1,
  }
}

const name = `key1.key2`

console.log(
  R.assocPath(name.split('.'), 2, Obj)
)
// --> { key1: { key2: 2 } }
 

<script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.26.1/ramda.min.js"></script>





使用lodash:



const Obj = {
  key1: {
    key2: 1,
  }
}

const name = `key1.key2`

console.log(
  _.set(Obj, name, 2)
)
// --> { key1: { key2: 2 } }

<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.min.js"></script>

关于javascript - 在嵌套对象中设置值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59439584/

10-12 00:04
查看更多