После соединения в новой строке массива изменения, внесенные в принимающий массив, отражаются в нем и в исходном массиве. Почему?

#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