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