尝试从数组错误中删除项目时

When trying to remove an item from array errors

因此,当我在 Khan Academy 上编写游戏时,当我尝试从数组中删除一颗子弹时,我 运行 进入错误 "Object does not support method splice" 我已经检查了我的代码几个小时并且没有发现为什么它不起作用。想法?

编辑:用于删除项目符号的代码是 bullets[i].splice(i,1);,这就是我的代码出错的原因。

MVCE:

var bullets = [];

var bullet= function(x,y,blah)
{
    //code that is not important here
};

bullets.push(bullet(0,0,30));
for(var I = 0; I < bullets.length; I++){
if(bulletRemove){
bullets[I].splice(i,1)
}
}

您有一个名为 bullets:

的变量
var bullets = [];

(旁注:为什么在这一行之前有一个随机的大括号?)

这个bullets变量是一个数组。它包含 Bullet class:

的实例
bullets.push(new Bullet(x, y, 10, player.x+bSize/2, player.y+bSize/2));

您可以使用数组访问特定索引处的 Bullet,然后您可以在该实例上调用 Bullet class 的函数:

bullets[i].move();

您还可以在数组本身上调用 splice() 函数:

bullets.splice(i,1);

但是,您不能在特定 Bullet 实例上调用 splice() 函数!

bullets[i].splice(i,1);

此行从 bullets 数组的 i 索引中获取 Bullet 的实例,然后尝试从 [=] 调用 splice() 函数18=] class。但是 Bullet class 没有 splice() 函数!这就是导致错误的原因。

相反,您可能打算在数组本身上调用它:

bullets.splice(i,1);

以后,在post提出问题之前尝试缩小问题范围。尝试 post 一个 MCVE 而不是整个项目。您可以将一个示例程序放在一起,该程序仅使用几行来创建一个硬编码数组,并用它来演示您的问题。您可能会在创建 MCVE 的过程中自己发现问题!