1

我有一个 feathersui 列表组件,我想知道如果列表中当前不存在新项目,是否有办法将它取消移动到列表的开头。我想做的是类似下面的事情(大部分已经完成,除了'如果它不存在部分):

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});
    }
}

我知道 PHPin_array如此希望有人知道 AS3 等价物。

谢谢

4

2 回答 2

0

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

数组有一个 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}););
     }
}
于 2013-06-26T10:22:29.537 回答
0

查看 indexOf -> docs
它将返回项目的位置,如果它不存在,它将返回 -1

if(itemListArray.indexOf(resultsArray[i].notification_id) == -1){
    // item i doesnt exist
}
于 2013-06-26T10:30:55.633 回答