不应修改的数组

问题描述

我有一个数组(arr1),我将其推入另一个数组(arr2)。 我用循环修改了“ arr1”,但是最后,“ arr2”也被修改了!为什么呢 我想在开始时保持“ arr2”不变。我怎么了?

arr1 = [1,2,3];
arr2 = [];
          
arr2.push(arr1);
              
$("#a1").html(arr1); // 1,3
$("#a2").html(arr2); // 1,3   

    // loop modifying ONLY 'arr1'... 
    for (i=0 ; i<arr1.length ; i++) {
        arr1[i] = arr1[i]*3;
    }

$("#b1").html(arr1); // 3,6,9
$("#b2").html(arr2); // 3,9 ... ??..incomprehensible !
// 'arr2' should not be modified ! The result should be 1,3
// Why is 'arr2' still modified ?

解决方法

数组对象充当引用类型,而不是arr2.push(arr1);,您可以尝试使用最新的es6扩展运算符arr2 = [...arr1];,否则可以使用切片方法arr2 = arr1.slice();