2010-06-12 47 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