2016-09-19 60 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;它永远不会删除数组。如果它是清除数组,那么它必须一次删除一个元素,在每次迭代中从数组末尾弹出一个元素。