Javascript 如何使用侧滚游戏中的方法从数组中移除元素?

Javascript 如何使用侧滚游戏中的方法从数组中移除元素?,javascript,arrays,loops,methods,Javascript,Arrays,Loops,Methods,我正在制作一个flappy bird游戏,玩家必须从一个数组中捕获所有单词。现在,我正在使用shift()方法删除元素,如下所示: if ( bX + bird.width >= words[i].x && bX + bird.width <= words[i].x + 40 && bY+bird.height >= words[i].y && bY+bird.height <

我正在制作一个flappy bird游戏,玩家必须从一个数组中捕获所有单词。现在,我正在使用shift()方法删除元素,如下所示:

if ( bX + bird.width >= words[i].x 
        && bX + bird.width <= words[i].x + 40
        && bY+bird.height >= words[i].y
        && bY+bird.height <= words[i].y + 40){

        words.shift();
    };
if(bX+bird.width>=字[i].x
&&bX+bird.width=字[i].y

&&bY+bird.height
if(words[i].x您已经在碰撞检测中使用变量
i
。您可以使用它来选择要检查的单词

另一方面,您使用了
words.shift()
,它总是删除数组的第一个字

只要你的鸟总是在最左边,并且所有的单词在x轴上都有一个合理的距离,这可能会起作用

但如果您想更一般地进行测试,您可以在循环中测试所有可能的单词,并删除所有被击中或离开屏幕的单词

有多种方法可以从数组中删除项。例如,您可以使用
words.splice(i,1)
删除
words[i]
。如果在查找中使用此方法,请记住所有后续索引都会更改1

for (let i = 0; i < words.length; ++i) {
    if (birdCollidesWithWord(words[i]) || wordWentOutOfScreen(words[i])) {
        words.splice(i, 1);
        i -= 1;
    }
}
for(设i=0;i
    if (words[i].x <= 0){
        words.shift();

    }
for (let i = 0; i < words.length; ++i) {
    if (birdCollidesWithWord(words[i]) || wordWentOutOfScreen(words[i])) {
        words.splice(i, 1);
        i -= 1;
    }
}