在新阵列行拼接后,对接收阵列所做的更改会反映在它和源阵列中为什么?

问题描述

我设置了两个数组 - arr1 和 arr2,每个数组都有两个维度。我成功地将 arr2[1] 插入索引 1 处的 arr1。当我设置 arr[1][1]=0 的值时,它也会将源元素 arr2[1][1] 更改为 0 而不是保持为 9。为什么?如何断开源阵列与目标阵列 (arr1) 的连接。

我尝试将 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,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

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)