我有一个对象数组。我想要做的是获取属性等于某个值的对象的最后一个索引。
例如:
// 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"
答案 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的索引