Javascript 如何防止更新嵌套对象中的数组时将其转换为对象
我有一个状态,它是一个嵌套对象,在某些级别上包含数组,我想更新一个值,如下所示:Javascript 如何防止更新嵌套对象中的数组时将其转换为对象,javascript,arrays,reactjs,redux,react-redux,Javascript,Arrays,Reactjs,Redux,React Redux,我有一个状态,它是一个嵌套对象,在某些级别上包含数组,我想更新一个值,如下所示: a.b.c[0].d=“新值” 在Redux更新期间尝试进行深度复制时,它会将我的数组c转换为一个对象,因此我的应用程序会中断,因为复制的对象上不再存在我的数组操作 a: { ...state.a, b:{ ...state.a.b, c: { ...state.a.b.c, // This converts c from array t
a.b.c[0].d=“新值”
在Redux更新期间尝试进行深度复制时,它会将我的数组c
转换为一个对象,因此我的应用程序会中断,因为复制的对象上不再存在我的数组操作
a: {
...state.a,
b:{
...state.a.b,
c: {
...state.a.b.c, // This converts c from array to object
[0]:{
...state.a.b.c[0],
d: "new value"
}
}
}
}
如何在不将
c
转换为对象的情况下进行深度复制?您的c
更改为对象(因为您这样写了)
谢谢,这似乎有效,但是如果不是0,我如何指定要更新的正确索引,例如,c[5],例如c:[…state.a.b.c.slice(0,4),{…state.a.b.c[4],d:'new value'},…state.a.b.c.slice(0,5)]
a: {
...state.a,
b:{
...state.a.b,
c: [
{
...state.a.b.c[0],
d: "new value"
},
...state.a.b.c.slice(1)
]
}
}