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?

questionAnswers(7)

yourAnswerToTheQuestion