Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 尝试仅填充对角线时,二维数组始终填充整个数组_Javascript_Arrays - Fatal编程技术网

Javascript 尝试仅填充对角线时,二维数组始终填充整个数组

Javascript 尝试仅填充对角线时,二维数组始终填充整个数组,javascript,arrays,Javascript,Arrays,我试图制作一个矩阵,在主对角线上填充1。当我运行代码时,它用1填充整个矩阵。数组初始化为0,该值工作正常 var zeroMatrix=函数(n){ var矩阵=[]; var行=[]; 对于(变量i=0;i

我试图制作一个矩阵,在主对角线上填充1。当我运行代码时,它用1填充整个矩阵。数组初始化为0,该值工作正常

var zeroMatrix=函数(n){
var矩阵=[];
var行=[];
对于(变量i=0;i
.push()
行.slice(0)
,它将
数组的副本创建到
矩阵
数组

var zeroMatrix=函数(n){
var矩阵=[];
var行=[];
对于(变量i=0;i控制台日志(diagOne(4))这是因为将同一行推入矩阵n次,这使得矩阵的每个元素都包含对同一行的引用。现在,在diagOne()中,您正在更改同一行上的元素,并最终得到矩阵中的所有元素

您需要为矩阵中的每个元素创建新行。你可以这样做

var zeroMatrix=函数(n){
var矩阵=[];
var行=[];
对于(变量i=0;i控制台日志(diagOne(4))您的问题是在每个循环中推送相同的行

您可以在每个循环中生成一个新行,也可以创建一个副本

var zeroMatrix=函数(n){
var矩阵=[];
对于(var j=0;j控制台日志(diagOne(4))在这里,您可以使用另一种解决方案

var diagOne=函数(n){
var矩阵=[];
对于(变量i=0;i