JavaScript - 数组 - 更改一个元素但为什么整个列都改变了?

标签 javascript arrays

我是 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/

相关文章:

javascript - 如何让我的 CSS slider 自动播放?

Javascript原型(prototype)和修改原始对象

php - 如何从 PHP session 数组中删除变量

java - 如何仅将 1 个元素传递给 ArrayAdapter 并确保它只显示唯一的项目

javascript - 如何在不同页面上单击具有多个不同属性的同名按钮?

javascript - Angular 模块注入(inject)错误

Javascript:快速而肮脏的空 div 或其他元素

java - 将整数和字符串转换为字节数组,反之亦然

Javascript:将项目推送到数组不起作用

javascript - UseEffect 显示不适当的值,但仅一次