Javascript passando arrays para funções por valor, deixando a matriz original inalterada
Eu li muitas respostas aqui relativas a 'por valor' e 'por referência' passando para o envio de matrizes para funções javascript. No entanto, estou com um problema ao enviar uma matriz para uma função e deixar a matriz original inalterada. Este exemplo ilustra o 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;
}
Não consigo entender porque qualquer coisa nesta função deve alterar o array original.
chamar essa função altera diretamente a matriz original se a chamada de função for atribuída a uma nova matriz:
myArray = [["A","B","C"],["D","E","F"],["G","H","I"]];
anotherArray = new Array();
anotherArray = myFunction(myArray);
// myArray gets modified!;
Eu tentei usar .valueOf () para enviar o primitivo:
anotherArray = myFunction(myArray.valueOf());
// myArray gets modified!;
Eu até tentei quebrar o array down element por element e sub-element por sub-element e atribuir tudo a um novo array bidimensional e o array original ainda é modificado.
Também juntei os subelementos a uma string, os processei, dividi-os novamente em arrays e a matriz original ainda é modificada.
Por favor, alguém sabe como eu posso passar os valores da matriz para uma função e não ter a mudança da matriz passada?