我是 JavaScript 新手,我想初始化一个二维数组并更改其中一个字符。但是,当我更改其中一个数组值时,例如abc[1,1],整列都变了。我想请问一下为什么会这样以及如何预防呢?我尝试使用 .slice 来制作副本,但似乎不起作用
My prefered result
- - -
- 1 -
- - -
The actual ans:
- 1 -
- 1 -
- 1 -
//My code:
var abc = new Array(3,3)
for(var i =0; i<3;i++)
for(var j =0; j<3;j++)
abc[i,j]="-"
abc[1,1] ="1"
for(var i =0; i<3;i++){
for(var j =0; j<3;j++)
document.writeln(abc[i,j]+" ")
document.writeln("<br \>")
}
最佳答案
comma operator计算两个表达式并返回最后一个。因此 i,j
返回 j
。
事实上,您使用的是一维数组,而不是二维数组。
正确的做法是:
var abc = Array(3);
for(var i=0; i<3; ++i) {
abc[i] = Array(3);
for(var j=0; j<3; ++j)
abc[i][j] = "-"
}
abc[1][1] = "1";
关于JavaScript - 数组 - 更改一个元素但为什么整个列都改变了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29884119/