Javascript przekazuje tablice do funkcji według wartości, pozostawiając oryginalną tablicę niezmienioną
Przeczytałem tutaj wiele odpowiedzi dotyczących przekazywania „według wartości” i „przez odniesienie” do wysyłania tablic do funkcji javascript. Mam jednak problem z wysłaniem tablicy do funkcji i pozostawieniem oryginalnej tablicy niezmienionej. Ten przykład ilustruje problem:
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;
}
Nie mogę zrozumieć, dlaczego cokolwiek w tej funkcji powinno zmienić oryginalną tablicę.
wywołanie tej funkcji bezpośrednio zmienia oryginalną tablicę, jeśli wywołanie funkcji jest przypisane do nowej tablicy:
myArray = [["A","B","C"],["D","E","F"],["G","H","I"]];
anotherArray = new Array();
anotherArray = myFunction(myArray);
// myArray gets modified!;
Próbowałem użyć .valueOf (), aby wysłać prymityw:
anotherArray = myFunction(myArray.valueOf());
// myArray gets modified!;
Próbowałem nawet złamać tablicę element po elemencie przez element i podelement według podelementu i przypisując wszystko do nowej tablicy 2-d, a oryginalna tablica nadal ulega modyfikacji.
Dołączyłem również podelementy do łańcucha, przetwarzałem je, dzieliłem z powrotem na tablice, a oryginalna tablica wciąż ulega modyfikacji.
Czy ktoś wie, jak mogę przekazać wartości tablicy do funkcji i nie zmienić przekazanej tablicy?