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

时间:2016-06-20 14:40:17

标签: arrays processing khan-academy

所以在Khan Academy上写游戏时当我尝试从数组中删除子弹时,我遇到错误“对象不支持方法拼接”我已经检查了我的代码几个小时但没有发现为什么它不起作用。想法?

编辑:用于删除项目符号的代码是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)
}
}

1 个答案:

答案 0 :(得分:2)

您有一个名为bullets的变量:

 
var bullets = [];

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

bullets变量是一个数组。它包含Bullet类的实例:

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

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

bullets[i].move();

您也可以在阵列上调用splice()函数:

bullets.splice(i,1);

但是,您无法调用特定splice()实例上的Bullet函数!

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

此行从Bullet数组的i索引中获取bullets的实例,然后尝试从splice()调用Bullet函数}类。但是Bullet类没有splice()函数!这就是造成错误的原因。

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

bullets.splice(i,1);

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