Escribí una función calcNewtonPath con 4 parámetros como se muestra a continuación. Sin embargo, cuando la llamo, la función cambia el valor del parámetro matA inesperadamente y no puedo entender por qué.
function calcNewtonPath(matA,matB,m,n){ let temp = matA.slice() //i tried this to prevent the unexpected change but it didn't work for(let i=0;i<m;i++){ temp[i].push(-matB[i]) } return matrix.solve(temp,m,n) } ¡La función solve también cambia el valor de la temp ! Pero es un poco complicado, así que creo que no pondré el código aquí. ¿Alguien puede ayudarme con esto?
ACTUALIZADO:
.slice() solo hará una copia superficial.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice
Eso significa por ejemplo:
const a = [[1,2,3]] const b = slice.a(); b[0][1] = 4;también se cambiará una matriz.
a será [[1,4,3]] así como b ;
Una solución fácil sería hacer una copia profunda de una matriz:
const deepCopy = JSON.parse(JSON.stringify(array));