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)
        ]
    }

}