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

私は PHP があることを知っているin_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 に答える