2010-06-12 48 views
1

我不得不为数组添加一些值。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()函数的索引问题!

+0

BalusC的答案是正确的,但作为一个提示;使用'[1,2,3]'而不是'new Array(1,2,3)' – 2010-06-12 16:38:07

回答

5

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

所以不是

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

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

是啊!这项工作! tnx老兄:) – markzzz 2010-06-12 15:44:26

+0

不客气。你应该接受标记这个答案:) – BalusC 2010-06-12 16:25:34

+0

好吧,我已经做到了:)再次tnx! – markzzz 2010-06-12 18:04:12