Feathersui AS3如果它们不存在in_arry则取消移动新项目

时间:2013-06-26 09:44:00

标签: actionscript-3

我有一个羽毛列表组件,我想知道是否有一种方法可以将新项目卸载到列表的开头,如果列表中当前不存在。我想做的是如下所示(大多数已经完成除了'如果它不存在的部分):

for(var i:int = 0; i < resultsArray.length; i++)
{
    if(resultsArray[i].notification_id DOES NOT EXIST IN itemListArray)
    {
    this.itemListArray.unshift({notificationID: resultsArray[i].notification_id,
        notificationText: resultsArray[i].message,
        notificationType: resultsArray[i].notification_type,
        notificationDest: resultsArray[i].destination,
        notificationDestID: resultsArray[i].destination_id,
        dateAdded: resultsArray[i].date_added});
    }
}

我知道PHP有in_array所以希望有人知道AS3等价物。

由于

2 个答案:

答案 0 :(得分:0)

在循环之前定义字典以获取itemListArray包含的所有notificationID。

Array有一个indexOf函数,你可以通过该函数搜索项目。 http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/Array.html#indexOf()

在您的情况下,数组不直接包含notification_id,因此无法正常工作

var dict:Dictionary = new Dictionary();

for each (var obj:Object in itemListArray) {
     dict[obj.notification_id] = true;
}

for(var i:int = 0; i < resultsArray.length; i++)
{
     if(!dict[resultsArray[i].notification_id])
     {
          dict[resultsArray[i].notification_id] = true;

          this.itemListArray.unshift({notificationID: resultsArray[i].notification_id}, notificationText: resultsArray[i].message,
                                      notificationType: resultsArray[i].notification_type,
                                      notificationDest: resultsArray[i].destination,
                                      notificationDestID: resultsArray[i].destination_id,
                                      dateAdded: resultsArray[i].date_added}););
     }
}

答案 1 :(得分:0)

看看indexOf - &gt; docs
它将返回项目的位置,如果它不存在则返回-1

if(itemListArray.indexOf(resultsArray[i].notification_id) == -1){
    // item i doesnt exist
}