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