Javascript pasando matrices a funciones por valor, dejando la matriz original inalterada
He leído muchas respuestas aquí relacionadas con el paso 'por valor' y 'por referencia' para enviar matrices a funciones javascript. Sin embargo, estoy teniendo problemas para enviar una matriz a una función y dejar la matriz original sin alterar. Este ejemplo ilustra el problema:
function myFunction(someArray)
{
// any function that makes an array based on a passed array;
// someArray has two dimensions;
// I've tried copying the passed array to a new array like this (I've also used 'someArray' directly in the code);
funcArray = new Array();
funcArray = someArray;
var i = 0;
for(i=0; i<funcArray.length; i++)
{
funcArray[i].reverse;
}
return funcArray;
}
No puedo entender por qué cualquier cosa en esta función debería alterar la matriz original.
llamar a esta función cambia directamente la matriz original si la llamada de función se asigna a una nueva matriz:
myArray = [["A","B","C"],["D","E","F"],["G","H","I"]];
anotherArray = new Array();
anotherArray = myFunction(myArray);
// myArray gets modified!;
Intenté usar .valueOf () para enviar el primitivo:
anotherArray = myFunction(myArray.valueOf());
// myArray gets modified!;
Incluso he intentado dividir la matriz elemento por elemento y subelemento por subelemento y asignar todo a una nueva matriz bidimensional y la matriz original aún se modifica.
También he unido los subelementos a una cadena, los he procesado, los he dividido en matrices y la matriz original todavía se modifica.
Por favor, ¿alguien sabe cómo puedo pasar los valores de la matriz a una función y no puedo cambiar la matriz pasada?