Вопрос фильтрации объектов массива AS3 - PullRequest
0 голосов
/ 29 марта 2011

У меня есть массив объектов. Я хотел бы получить последний индекс объекта, свойство которого равно некоторому значению.

Ex:

// 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 голосов
/ 29 марта 2011

последний индекс поиска по строке, а не по массиву: 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, но я не могу вспомнить его, надеюсь, кто-то может это прокомментировать, ноЯ думаю, что-то вроде для (х в массиве) {...}

в любом случае, используя эту логику, было бы намного быстрее, если вы измените его, поэтому вы начинаете с конца массива и возвращаетеиндекс с первым появлением объекта с категорией "a_category"

0 голосов
/ 29 марта 2011
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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...