删除数组中的最后一项,删除整个数组

Removing Last Item In Array, Deletes Whole Array

我在 for 循环中有一个 if 语句,它循环遍历整个数组并显示元素:

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 语句检查与 canvas 相比的元素高度并删除该元素。问题是当 if 语句等于 true 时,数组中的所有元素都被删除。帮助!

因为你在做流行音乐。 Pop 删除数组的最后一个元素。如果您的第一项到达底部,那么它将删除数组中的最后一项。它将循环并继续删除最后一个项目,直到它最终删除第一个触底的项目。

改用拼接

txtA.splice(i, 1);

你的逻辑一定是错误的,不知道Array的内容很难解决

也就是说,Array.prototype.pop对您描述的行为负责。来自 MDN:

The pop method removes the last element from an array and returns that value to the caller... If you call pop() on an empty array, it returns undefined.

即pop 要么从数组中删除最后一个元素,要么(在空数组的情况下)什么都不做并且 returns 未定义;它从未真正删除数组。如果它是清除数组,那么它必须一次删除一个元素,每次迭代从数组末尾弹出一个元素。