AS3数组对象过滤问题

时间:2011-03-29 18:08:18

标签: arrays actionscript-3 object

我有一个对象数组。我想要做的是获取属性等于某个值的对象的最后一个索引。

例如:

// this occurs on a mouse click
var stockObj:Object = new Object();
stockObj.ID = "an_id";
stockObj.category = "a_category";
array.push(stockObj);
//psuedo
trace(array.lastIndexOf(stockObj.category=="a_category"));

我希望这能跟踪category属性等于"a_category"

的对象的索引

2 个答案:

答案 0 :(得分:0)

function searchCategory(arr:Array, cat:String):int {
    for (var i:int = arr.length - 1; i >= 0; i--) {
        if (arr[i].category == cat) {   // assuming array objects contains category
            return i;
        }
    }

    return -1;    // no match
}

答案 1 :(得分:0)

对字符串而不是数组的最后搜索索引: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/String.html#lastIndexOf%28%29

你需要做的是运行数组,这将花费O(n)时间并比较以查看哪个索引具有类别名称为“a_category”的对象

for(int i = 0;i<array.length;i++){

if(array[i].category = "a_category")
maxIndex = i;
}

}

实际上有一种更好的方法可以循环遍历obj数组中的所有obj,但是我不记得它希望有人可以对此进行评论,但我认为它类似于 for(x in array){ ... }

无论如何使用那个逻辑,如果你反转它会快得多,所以你从数组的末尾开始并返回带有类别“a_category”的第一次出现的obj的索引