Actionscript 3:当元素是 objects/class 个实例时,识别要删除的数组元素
Actionscript 3: Identifying an array element to delete when the elements are objects/class instances
我有一个对象数组,其中一些是影片剪辑,一些是 类 的实例。我需要从数组中删除一个项目,但正在为如何最好地确定要删除的数组索引而苦苦挣扎。
我目前正在使用此代码,它确实有效
var i:int;
for (i = 0; i < list.length; i++) {
if (list[i].toString() == '[object myClass]') {
trace('found', i);
list.removeAt(i);
}
}
我认为必须存在一种更好的方法来获取对象名称并且无需遍历数组。
我可以稍微说明一下您希望如何识别应删除的对象。如果您只想删除属于 myClass
class 实例的任何对象,我建议使用 is
关键字。
此外,一个警告,在迭代列表时从列表中删除项目只是自找麻烦。如果您删除 index [0]
处的对象,那么以前位于 index [1]
处的对象现在是 index [0]
,但是您的 for 循环将在 i
的末尾递增 1每次迭代,所以你永远不会再次检查 index [0]
。因此,您可以跳过一个或多个要删除的对象。
而是尝试迭代它 backwards--
应该可以解决该问题。
以下是这两个建议的组合:
for (var i:int = (list.length - 1); i >= 0; i--)
{
if (list[i] is myClass)
{
trace("found", i);
list.removeAt(i);
}
}
我有一个对象数组,其中一些是影片剪辑,一些是 类 的实例。我需要从数组中删除一个项目,但正在为如何最好地确定要删除的数组索引而苦苦挣扎。
我目前正在使用此代码,它确实有效
var i:int;
for (i = 0; i < list.length; i++) {
if (list[i].toString() == '[object myClass]') {
trace('found', i);
list.removeAt(i);
}
}
我认为必须存在一种更好的方法来获取对象名称并且无需遍历数组。
我可以稍微说明一下您希望如何识别应删除的对象。如果您只想删除属于 myClass
class 实例的任何对象,我建议使用 is
关键字。
此外,一个警告,在迭代列表时从列表中删除项目只是自找麻烦。如果您删除 index [0]
处的对象,那么以前位于 index [1]
处的对象现在是 index [0]
,但是您的 for 循环将在 i
的末尾递增 1每次迭代,所以你永远不会再次检查 index [0]
。因此,您可以跳过一个或多个要删除的对象。
而是尝试迭代它 backwards--
应该可以解决该问题。
以下是这两个建议的组合:
for (var i:int = (list.length - 1); i >= 0; i--)
{
if (list[i] is myClass)
{
trace("found", i);
list.removeAt(i);
}
}