2013-06-26 28 views
1

我有一個feathersui列表組件,並且我想知道是否有一種方法可以將新項目移到列表開頭,如果它不存在名單。我想這樣做的是類似下面的(大部分是除了「,如果它不存在,部分已經完成):Feathersui AS3如果它們不存在in_arry,就不會移動新項目

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等同。

感謝

+0

是如果條件應該是resultsArray [i] .notification_id不存在itemListArray? – Pan

+0

對不起。 – puks1978

回答

0

定義詞典中的循環之前獲得所有itemListArray包含notificationID。

數組有一個indexOf函數,您可以通過該函數搜索項目。 http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/Array.html#indexOf()

在你的情況下,數組不直接包含notification_id,這樣就不會在工作的indexOf

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

看 - >docs
它將返回該項目的位置,如果它不存在它將返回-1

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