2016-09-19 57 views
-1

我有一個if語句內的for循環,其循環通過整個陣列,並顯示的元素:卸下最後一項陣列,刪除整個陣列

for (var i = 0; i < txtA.length; i++) { 
    txtA[i].update(); 
    txtA[i].show(); 

    if (txtA[i].y == height) { 
     txtA.pop(); 
     console.log(txtA.length); 
    } 
} 

的,如果相比於畫布語句檢查元件高度並刪除元素。問題是當if語句等於true時,數組中的所有元素都被刪除。幫幫我!

+1

我們還可以看到您正在使用的陣列嗎? –

+0

你確定數組有一個以上的元素開始? – Carcigenicate

+0

該數組包含多個對象構造函數,並帶有x,y,letter,update()和show(); – RomanK

回答

1

因爲你在做流行音樂。 Pop刪除數組的最後一個元素。如果您的第一個項目觸及底部,那麼它將刪除數組中的最後一個項目。它將循環並繼續移除最後一個項目,直到它最終移除碰到底部的第一個項目。

使用拼接,而不是

txtA.splice(i, 1);

+0

謝謝,這工作 – RomanK

0

你的邏輯必須是錯誤,這是難以解決,而無需知道數組的內容。

這就是說,Array.prototype.pop不是負責您描述的行爲。從MDN

pop方法刪除數組中的最後一個元素,並返回 值給調用者。如果你空數組上調用pop(),它返回 不確定。

I.e. pop或者從數組中刪除最後一個元素或者(在一個空數組的情況下)什麼都不做並且返回undefined;它永遠不會刪除數組。如果它是清除數組,那麼它必須一次刪除一個元素,在每次迭代中從數組末尾彈出一個元素。