我在javascript中声明了一个2d数组,如下所示:
cell = {visited:false, left:true, top:true, right:true, bottom:true}
cells = new Array(10);
for (i = 0; i < 10; i++) //Initiate 2d cells array.
{
cells[i] = new Array(cell,cell,cell,cell,cell,cell,cell,cell,cell,cell);
}
稍后在代码中我更新了数组中的一个对象:
cells[0][0].visited = true;
然而,在我这样做之后,数组中每个对象的每个访问属性都标记为true。
答案 0 :(得分:0)
正如@Pointy所说,你的代码有这个参考问题。您可以使用Object.create()
构建&#34;克隆&#34;来解决此问题。对象:
cell = {visited:false, left:true, top:true, right:true, bottom:true}
cells = new Array(10);
for (i = 0; i < 10; i++) //Initiate 2d cells array.
{
cells[i] = new Array(
Object.create(cell),
Object.create(cell),
Object.create(cell),
Object.create(cell),
Object.create(cell),
Object.create(cell),
Object.create(cell),
Object.create(cell),
Object.create(cell),
Object.create(cell)
);
}
cells[0][0].visited = true;
&#13;
答案 1 :(得分:-1)
抱歉,我需要使用不同的“单元”对象启动数组:
for (i = 0; i < 10; i++) //Initiate 2d cells array.
{
cells[i] = new Array({visited:false, left:true, top:true, right:true, bottom:true},
{visited:false, left:true, top:true, right:true, bottom:true},
{visited:false, left:true, top:true, right:true, bottom:true},
{visited:false, left:true, top:true, right:true, bottom:true},
{visited:false, left:true, top:true, right:true, bottom:true},
{visited:false, left:true, top:true, right:true, bottom:true},
{visited:false, left:true, top:true, right:true, bottom:true},
{visited:false, left:true, top:true, right:true, bottom:true},
{visited:false, left:true, top:true, right:true, bottom:true},
{visited:false, left:true, top:true, right:true, bottom:true});
}