在Javascript中将数组推入多维数组

在Javascript中将数组推入多维数组,javascript,multidimensional-array,Javascript,Multidimensional Array,我在尝试执行将数组推入多维数组的简单操作时遇到了奇怪的情况。下面是一个代码: var Atest = Array(); var Btest = ([0, 0, 0, 0]); Btest[0] = 1; Btest[1] = 2 Btest[2] = 3; Btest[3] = 4; Atest.push([Btest]); Btest[0] = 11; Btest[1] = 12; Btest[2] = 13; Btest[3] = 14; Atest.push([Btest]); do

我在尝试执行将数组推入多维数组的简单操作时遇到了奇怪的情况。下面是一个代码:

var Atest = Array();
var Btest = ([0, 0, 0, 0]);

Btest[0] = 1;
Btest[1] = 2
Btest[2] = 3;
Btest[3] = 4;
Atest.push([Btest]);

Btest[0] = 11;
Btest[1] = 12;
Btest[2] = 13;
Btest[3] = 14;
Atest.push([Btest]);

document.write("<br>" + Atest);
但是,我得到了意外的输出:

11,12,13,14,11,12,13,14
我错过了什么


(注:发现类似的未回答的5年前提出的问题:)

当您将
Btest
推入
Atest
时,您将指针推到
Btest
数组

您需要复制
Btest
中包含的基础值

使用将创建数据副本的
扩展运算符的示例:

const Atest=Array();
常数Btest=([0,0,0,0]);
b测试[0]=1;
b测试[1]=2
b测试[2]=3;
b测试[3]=4;
试验推力([…b试验]);
b测试[0]=11;
b测试[1]=12;
b测试[2]=13;
b测试[3]=14;
试验推力([…b试验]);

document.write(`
${Atest}`)正在修改
Btest
的值两次。您应该使用
atest.concat(Btest)
;这是因为阵列是可变的,所以您需要在推进到新阵列的同时进行深度克隆(尽管我认为这是一个引擎实现细节)@evolutionxbox nice information:)thx不用担心。我个人认为这没什么大不了的,但我希望它能帮助汉克斯,这很有效!!!
11,12,13,14,11,12,13,14