#arrays #splice
Вопрос:
Я настроил два массива — arr1 и arr2 с двумя измерениями каждый. Я успешно вставляю arr2[1] в arr1 с индексом 1. Когда я устанавливаю значение arr[1][1]=0, он также изменяет исходный элемент arr2[1][1] на 0 вместо того, чтобы оставаться равным 9. Почему? Как отключить исходный массив от целевого массива (arr1).
Я попытался установить переменную a tmp равной исходной строке, сращивая переменную tmp в arr1. когда я внесу изменение в arr[1][1] , все три будут изменены. Я озадачен!
function test () {
var arr1 = new Array(2);
arr1[0] = new Array (2);
arr1[0][0] = 0;
arr1[0][1] = 1;
arr1[1] = new Array (2);
arr1[1][0] = 2;
arr1[1][1] = 3;
var arr2 = new Array(2);
arr2[0] = new Array (2);
arr2[0][0] = 6;
arr2[0][1] = 7;
arr2[1] = new Array (2);
arr2[1][0] = 8;
arr2[1][1] = 9;
Logger.log("BEFORE: arr1[1][1]=" arr1[1][1] " arr2[1][1]=" arr2[1][1]);
arr1.splice(1,0,arr2[1]);
Logger.log("AFTER: arr1[1][1]=" arr1[1][1] " arr2[1][1]=" arr2[1][1]);
arr1[1][1] = 0;
Logger.log("FINAL: arr1[1][1]=" arr1[1][1] " arr2[1][1]=" arr2[1][1]);
} //end function test
RESULTS:
5:02:40 PM Notice Execution started
5:02:40 PM Info BEFORE: arr1[1][1]=3 arr2[1][1]=9
5:02:40 PM Info AFTER: arr1[1][1]=9 arr2[1][1]=9
5:02:40 PM Info FINAL: arr1[1][1]=0 arr2[1][1]=0
5:02:40 PM Notice Execution completed
EXPECTED: arr1[1][1]=0 arr2[1][1]=9