Javascript 如何基于参数插值关键点并在对象中更新其值es6

Javascript 如何基于参数插值关键点并在对象中更新其值es6,javascript,reactjs,ecmascript-6,Javascript,Reactjs,Ecmascript 6,我有 所以,如果我调用updateAbc('main','primary','updatedPrimary'),它应该返回更新的abc对象 const updateAbc = (node, key, value) => { return {updated abc} } 或者当调用updateAbc('buttons'、'text'、'updateText')时,它应该返回带有值的更新的abc对象 { main: { primary: 'updatedPrimary',

我有

所以,如果我调用
updateAbc('main','primary','updatedPrimary')
,它应该返回更新的abc对象

const updateAbc = (node, key, value) => {
return {updated abc}
}
或者当调用
updateAbc('buttons'、'text'、'updateText')
时,它应该返回带有值的更新的abc对象

{
  main: {
    primary: 'updatedPrimary',
   },
  buttons: {
    text: 'initialText',
  },
}
它应该只为传递的值更新。如何在es6中实现这一点

{
  main: {
    primary: 'initialPrimary',
  },
  buttons: {
    text: 'updatedText',
  },
}
请注意,这不会按原样检查不存在的节点或键

你特别要求es6,所以这就是我的回答。其工作原理是传播
abc
,然后动态使用
节点
提供更新值的路径

通过使用
Object.assign
您可以通过执行以下操作获得相同的结果:

const abc = {
  main: {
    primary: 'initialPrimary',
    },
  buttons: {
    text: 'initialText',
  },
}

const updateAbc = (node, key, value) => {
  return {
     ...abc, 
    [node]: {
      [key]: value
    } 
  }
}

但是如果给定一个不存在的
节点
名称

这是否回答了您的问题?
const abc = {
  main: {
    primary: 'initialPrimary',
    },
  buttons: {
    text: 'initialText',
  },
}

const updateAbc = (node, key, value) => {
  return {
     ...abc, 
    [node]: {
      [key]: value
    } 
  }
}
const updateAbc = (node, key, value) => {
  var copyAbc = Object.assign({},abc)
  copyAbc[node][key] = value
  return copyAbc
}