gpt4 book ai didi

javascript从数组中删除项目

转载 作者:行者123 更新时间:2023-12-02 20:16:53 25 4
gpt4 key购买 nike

我有带有图形“对象”的“场景”...

Scene.prototype.objects=new Array();

Scene.prototype.add=function(obj){
var last=this.objects.length;
this.objects[last]=obj}

Scene.prototype.remove=function(obj){
this.objects.splice(obj.id,1)}

Scene.prototype.advance=function(){
for (var id in this.objects){
var obj=this.objects[id];
obj.id=id;
obj.advance();
}
}
Scene.prototype.paint=function(context){...}

每次创建和删除许多对象。 Array.prototype.splice 重新索引数组对吗?有谁知道更好的技术(在 javascript 数组上添加和删除)?

在我看来,还有另一种可能性可以做到这一点

Scene.prototype.remove=function(obj){
delete this.objects[obj.id]; // don,t care about this.objects.length
delete obj; // not necessary...
}

我还没试过...

我需要一本关于 JavaScript 的好书:)

最佳答案

你的delete方法不起作用,因为objects是一个数组,而obj.id是存储在该数组元素中的对象引用的id。 splice 将是要使用的方法,但您必须知道数组中元素的索引。也许你应该这样“记住”它:

Scene.prototype.add=function(obj){
var last=this.objects.length;
obj.objectsIndex = last;
this.objects[last]=obj
}

之后您可以:

Scene.prototype.remove=function(obj){
this.objects.splice(obj.objectsIndex,1)};
//reindex the objects within the objects Array
for (var i=0; i<this.objects.length;i++){
this.objects[i].objectsIndex = i;
}
}

注意:将 objects 数组添加到 Scene 构造函数的原型(prototype)中意味着它对于所有实例都是相同的(静态),这就是你想要的吗?

关于javascript从数组中删除项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6150114/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com