Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 删除选定对象之前数组中的所有元素_Javascript_Arrays_Loops_Processing_P5.js - Fatal编程技术网

Javascript 删除选定对象之前数组中的所有元素

Javascript 删除选定对象之前数组中的所有元素,javascript,arrays,loops,processing,p5.js,Javascript,Arrays,Loops,Processing,P5.js,可能只是一些愚蠢的东西,但我正在为大学作业在p5.js中重写Galaga,一开始我擅长消灭敌人。当一颗子弹射中屏幕上的第三个敌人时,所有的敌人都会被摧毁 “敌人”阵列只是一个简单的阵列,其中会推送敌人的对象:敌军=[] 对敌人的摧毁功能是 this.die = function() { enemies.splice(enemies[this.index], 1); } 循环是 for( var b = 0; b < player.bullets.length; b++) {

可能只是一些愚蠢的东西,但我正在为大学作业在p5.js中重写Galaga,一开始我擅长消灭敌人。当一颗子弹射中屏幕上的第三个敌人时,所有的敌人都会被摧毁

“敌人”阵列只是一个简单的阵列,其中会推送敌人的对象:
敌军=[]

对敌人的摧毁功能是

this.die = function() {
    enemies.splice(enemies[this.index], 1);
}
循环是

for( var b = 0; b < player.bullets.length; b++) {
    for(var i = 0; i < enemies.length; i++) {
        var bullet = player.bullets[b];
        if(collision(bullet.x, enemies[i].x, bullet.y, enemies[i].y, 20, 55, 40, 55)) {
            enemies[i].die();
        }
    }
}
for(var b=0;b

任何帮助都很好

拼接
的参数是已删除top的开始索引(第一个元素)和元素数

所以声明

敌人.splice(敌人[this.index],1);
似乎一点也不正确。可能是声明

敌人.拼接(this.index,1);
如果
此索引将是阵列中敌人的索引,则将执行您想要的操作。但是,如果你已经从阵列中删除了先前安排的敌人,情况就不会是这样了

我建议做
敌人。拼接(I,1)而不是
敌人[i].die()

for(var b=0;b

注意,一旦从列表中删除某个元素,则必须更新以下元素的属性
.index

拼接的参数是已删除的起始索引(第一个元素)和元素数

所以声明

敌人.splice(敌人[this.index],1);
似乎一点也不正确。可能是声明

敌人.拼接(this.index,1);
如果
此索引将是阵列中敌人的索引,则将执行您想要的操作。但是,如果你已经从阵列中删除了先前安排的敌人,情况就不会是这样了

我建议做
敌人。拼接(I,1)而不是
敌人[i].die()

for(var b=0;b

请注意,一旦从列表中删除某个元素,则必须更新以下元素的属性
.index

这里的问题到底是什么?不要删除(.splice())已销毁的元素,而是将其替换为未显示在屏幕中的另一个值
敌人[this.index]
返回什么?如果它不是一个数字,那么它就不会做出正确的反应。另外,不要忘记循环从开始到结束,一旦拼接,就会改变数组的大小,增加
i
,导致跳过。例如,如果
i
是3,而您删除了索引3,那么索引4处的内容现在是3,但您将
i
增加到4,而不检查新的3。当您拼接以补充即将到来的增量时,可以从末尾到开头或递减
i
。如果执行
操作,是否有效。拼接(i,1)而不是
敌人[i].die()?这里的问题到底是什么?不是删除(.splice())已销毁的元素,而是用另一个未显示在屏幕上的值替换它
bu敌[this.index]
返回什么?如果它不是一个数字,那么它就不会做出正确的反应。另外,不要忘记循环从开始到结束,一旦拼接,就会改变数组的大小,增加
i
,导致跳过。例如,如果
i
是3,而您删除了索引3,那么索引4处的内容现在是3,但您将
i
增加到4,而不检查新的3。当您拼接以补充即将到来的增量时,可以从末尾到开头或递减
i
。如果执行
操作,是否有效。拼接(i,1)而不是
敌人[i].die()