假设我在 React 中有以下对象:
{
name: 'John Max',
plan: { active: true }
}
然后,我有以下对象:
{ fields: { "plan.active": false } }
如何调整此对象以替换当前对象?
因此,在此示例中,plan[active]
将变为 false
而不是 true
。这将是唯一的改变。
最佳答案
您可以实现一个简单的函数,通过传递路径来遍历对象,您可以通过在点上分割对象键来获取该路径。
类似这样的事情:
setpath = ([p,...ps], v, o) => ps.length ? setpath(ps, v, o[p]) : o[p] = v
const data = { name: "John Max", plan: { active: true } }
const input = { fields: { "plan.active": false } }
let [path, val] = Object.entries(input.fields)[0] // path="plan.active", val=false
setpath(path.split("."), val, data)
console.log(data) // {name: "John Max", plan: {active: false}}
如果您计划在fields
下有多个类似路径的字段,并且想要更新对象中的所有这些字段,则可以使用Array.foreach
:
Object.entries(input.fields).forEach(([p,v]) => setpath(p.split("."), v, data))
关于javascript - 如何将这个对象合并到另一个对象中以在 React 中更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73890363/