我需要帮助来跟踪数组中的对象。我已经尝试给每个对象一个arrayIndex变量,所以我可以通过获取表示数组中的索引的var来拼接。
object0.arrayIndex = 0;
object1.arrayIndex = 1;
object2.arrayIndex = 2;
object3.arrayIndex = 3;但是,如果将对象移动到不同的数组,则这是有问题的。对象将从不同的位置移动,因此需要不断更新arrayIndex变量。
为此,我向每个对象添加了一个静态ID。使用for循环,我检查每个对象是否有我想拼接的相应对象ID。
var objectID:Number = objectArrayTarget.id;
for (var t:int; t<_objectArrayLayer1.length; t++)
{
if (objectID == _objectArrayLayer1[i].id)
{
var indexOfObject:Number = (_objectArrayLayer1.indexOf(_objectArrayLayer1[i]));
}
}
_objectArrayLayer1.splice(indexOfObject, 1);虽然这样做有效,但是否有一种更有效的方法来跟踪数组中的对象?对于100+对象,这可能会导致一些减速
这些对象被拼接,然后被推到一个新的数组中。
发布于 2013-08-20 13:23:55
如果您的“对象将从不同的地方移动”意味着同一对象从一个地方移动到另一个地方,则不需要arrayIndex。
var indexOfObject:Number = _objectArrayLayer1.indexOf(targetObj);
if (indexOfObject >= 0) {
_objectArrayLayer1.splice(indexOfObject, 1);
}如果它意味着不同的对象,比如副本,您可以比较一些属性来获得targetObj
for (var t:int = 0; t<_objectArrayLayer1.length; t++)
{
if (targetObj.id == _objectArrayLayer1[i].id)//assume id is unique key of the object
{
break;//i is the index here
}
}
if (i != _objectArrayLayer1.length) {//find target object
}如果对象类型有一个唯一的键,比如id,或者您可以使用对象的一些属性,比如name + "_“+ order,创建一个唯一的键,您可以使用字典,就像前面提到的Patel。
var dic:Dictionary = new Dictionary(true);
dic[obj1.id] = obj1;
dic[obj2.id] = obj2;//assume id the unique key,or you can use other key这样你就能找到像这样的obj
var obj:Object = dic[target.id]发布于 2013-08-20 12:00:59
而不是使用数组。我认为您应该使用像Hashset这样的Set实现--您将得到固定时间的查找,不需要排序,您可以添加、删除和查找对象。
https://stackoverflow.com/questions/18334291
复制相似问题