2012-09-06 31 views
0

我想從我的數組中刪除一個項目,然後每個項目都有相同的索引。使用reindex從數組中刪除 - AS3.0

var arr:Array = new Array(); 
arr[1] = 'One'; 
arr[2] = 'Two'; 
arr[3] = 'Three'; 

arr.splice(2, 1); 

for(var index in arr) { 
    trace(index+':'+arr[index]); 
} 

輸出:

1:One 
2:Three 

而且應該輸出中

1:One 
3:Three 

任何人都可以幫助我一點點嗎? :-)

回答

0

我找到了解決我的問題。

而不是使用數組,我會使用一個對象來保存我的項目。像這樣

var objArr = {1: 'One', 2: 'Two', 3: 'Three'}; 

而當我刪除我這樣做。我知道我不會得到數組函數,然後。但在我的情況下,我不需要他們。

0

如果拼接數組中的元素,則會刷新數組,然後移動該索引之後的元素以填充該索引。

如果您確實希望始終使用相同索引中的元素,那麼請使用空字符串來分配索引,而不要拼接它。

試試這個:

array[1] = ""; 

代替,

array.splice(1, 1); 

據我剪接練的好方法。

+0

我必須刪除該項目,而不是將其設置爲空。但感謝您的回答:-) – PeterBechP

+0

但請記住,刪除時,您將不會刪除之前的項目與索引中的項目相同。 – Moorthy

0

您可以使用delete操作:

var arr:Array = new Array(); 
arr[1] = 'One'; 
arr[2] = 'Two'; 
arr[3] = 'Three'; 

delete arr[2]; 

for(var index in arr) { 
    trace(index+':'+arr[index]); 
} 
+0

這會使其不確定。這不是我想要的。抱歉。但謝謝你的答案:-) – PeterBechP

+0

嗯。那時我無法得到你需要的東西。在你的代碼之後,你會用'trace(arr [2])'得到什麼? – Art

+0

我已經發布了一個答案與我的解決方案:-) – PeterBechP