2012-09-19 74 views
1

我正在JavaScript項目中,我有2個數組1.元素2. elementsOrder; elementsOrder數組包含每個元素的名稱,而elements數組包含每個元素的所有屬性。當我想從每個數組中刪除一個元素時,我使用「delete」構建函數,但它不刪除元素只將它設置爲Undefined,因此比我使用splice方法推出那些未定義的元素,但它不會沒有工作。JavaScript刪除比拼接

的是源:

var s1 = elementsOrder.indexOf(id); 
delete elements[s1]; 
delete elementsOrder[s1]; 

它的工作,並設置元素一一「未定義」順利,但是當我做:

var s1 = elementsOrder.indexOf(id); 
delete elements[s1]; 
delete elementsOrder[s1]; 
elements.splice(s1, 1); 
elementsOrder.splice(s1, 1); 

使用簡單的拼接方法不要」 t工作:

var s1 = elementsOrder.indexOf(id); 
elements.splice(s1, 1); 
elementsOrder.splice(s1, 1); 

我用這段代碼在我的Javascript Canvas項目中爲一些畫布對象設置動畫效果,這樣我就可以很容易地看到「刪除」工作順利並逐個「取消定義」元素,並且拼接不能順利進行,並且不會逐個放棄元素。

請參閱http://jsfiddle.net/7ZuuZ/工資atantion運作動畫,第三個功能從底部

+1

給了我們一個jsfiddle!它會幫助解答準確性和速度! – Phil

+1

你爲什麼使用刪除?拼接足以做你想做的事。 http://www.w3schools.com/jsref/jsref_splice.asp – Mark

+0

添加預期的和實際的輸出! – tucuxi

回答

8

爲什麼不直接拼接擺在首位?

var s1 = elementsOrder.indexOf(id); 
elements.splice(s1,1); 
elementsOrder.splice(s1,1); 

這裏沒有必要delete這裏。

+0

我試過你的方式,但它不工作,它不是這麼簡單,請參閱http:// jsfiddle.net/7ZuuZ/ – Irakli

+0

是的,你是對的,我的問題不是拼接,我有另一個問題,我已經解決了,所以謝謝反正 – Irakli