Я прочитал много ответов здесь, касающихся "по значению" и "по ссылке" для передачи массивов в функции javascript. Однако у меня проблема с отправкой массива в функцию и оставление исходного массива неизменным. Этот пример иллюстрирует проблему:
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;
}
Я не понимаю, почему что-то в этой функции должно изменить исходный массив.
вызов этой функции напрямую изменяет исходный массив, если вызов функции назначается новому массиву:
myArray = [["A","B","C"],["D","E","F"],["G","H","I"]];
anotherArray = new Array();
anotherArray = myFunction(myArray);
// myArray gets modified!;
Я попытался использовать .valueOf() для отправки примитива:
anotherArray = myFunction(myArray.valueOf());
// myArray gets modified!;
Я даже попытался сломать элемент массива вниз по элементу и подэлементу по подэлементу и присвоить все новому 2-d массиву, и исходный массив все еще модифицируется.
Я также присоединил подэлементы к строке, обработал их, разделил их на массивы, и исходный массив все еще модифицировался.
Пожалуйста, кто-нибудь знает, как я могу передать значения массива функции и не изменить переданный массив?