我的JS函数有问题。为了简化,我想用其他n个数组(arr2)填充数组(arr1)。在我的循环中,我为arr1中的当前位置使用一个计数器(出于某种原因,不能使用arr1.push)。如果我将所有的arr2都记录在arr1中,它们都是一样的,总是最后一个被添加。所以我写了一个基本的脚本来测试它。我总是记录第一个元素并增加计数器。 我是JS的新手,我是否有一些误会?
function test(){
var arr1 = [];
var arr2 = [];
var counter=1;
arr2[0]="first";
arr2[1]="first";
arr2[2]="first";
arr1[0]=arr2;
arr1[0].forEach(function(elem){console.log(elem);});
for (var i = 0; i < 10 ; i++) {
arr2[0]=counter;
arr2[1]=counter;
arr2[2]=counter;
arr1[counter]=arr2;
arr1[0].forEach(function(elem){console.log(elem);});
counter++;
}
}
<button onclick="test()">Click</button>
答案 0 :(得分:1)
您可以尝试使用传播运算符。
.data()
数组是引用类型,因此您始终引用基数,而不是将其副本放在arr1内,而是对arr2的引用。
您希望将arr2的副本分配给arr1。
您可以通过创建一个新的Array或更现代的... spread运算符来实现此目的
答案 1 :(得分:0)
正如Pointy所说的,它只是引用了arr2而不创建副本。
所以您需要
arr2=new Array();
在循环的开始。