我在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语句检查与画布相比的元素高度并删除元素。问题是当if语句等于true时,将删除数组中的所有元素。帮助!
答案 0 :(得分:1)
因为你正在做一个流行音乐。 Pop删除数组的最后一个元素。如果您的第一个项目到达底部,那么它将删除数组中的最后一项。它会循环并继续删除最后一项,直到最后删除第一个触及底部的项目。
使用拼接代替
txtA.splice(i, 1);
答案 1 :(得分:0)
你的逻辑必须是错误的,如果不知道数组的内容就很难解决。
话虽如此,Array.prototype.pop
不对您描述的行为负责。来自MDN:
pop方法从数组中删除最后一个元素并返回该元素 调用者的值...如果在空数组上调用pop(),则返回 未定义。
即。 pop要么从数组中删除最后一个元素,要么(在空数组的情况下)不执行任何操作并返回undefined;它永远不会实际删除数组。如果正在清除数组,那么它必须一次删除一个元素,在每次迭代时从数组的末尾弹出一个元素。