javascript splice()索引问题

时间:2010-06-12 13:37:57

标签: javascript splice

我必须为数组添加一些值。

代码例如:

temp[0]=new Array("0","0");
temp[1]=new Array("0","0");
temp[2]=new Array("0","0");
temp[3]=new Array("0","0");
temp[4]=new Array("0","0");

vt=new Array("1","0");
temp.splice(3, 0, vt);
temp.splice(4, 0, vt);

temp[3][1]="R";    

我期待这个输出:

1 - 0,0
2 - 0,0
3 - 0,0
4 - 1,R
5 - 1,0
6 - 0,0
7 - 0,0

但实际输出是:

1 - 0,0
2 - 0,0
3 - 0,0
4 - 1,R
5 - 1,R
6 - 0,0
7 - 0,0

有什么想法吗?我认为这是splice()函数的索引问题!

1 个答案:

答案 0 :(得分:5)

Javascript数组是对象。将对象放入数组时,基本上是在数组中引用它。你在这里把相同的引用放在这两个地方。如果更改引用,它将反映在所有其他引用中。您需要在两个位置插入 new 和单独的对象,以便引用指向不同的对象。

所以而不是

vt=new Array("1","0");
temp.splice(3, 0, vt);
temp.splice(4, 0, vt);

DO

temp.splice(3, 0, new Array("1","0"));
temp.splice(4, 0, new Array("1","0"));