检查dataprovider中是否存在某个项目

时间:2013-03-18 20:27:51

标签: flex dataprovider

下午好。

在添加数据提供者之前,我需要检查项目是否已存在。但是当我尝试在我的数组中执行此检查时,indexOf方法总是返回-1。谁可以帮助我?谢谢。

var contacts:Array = new Array();

for each(var i:Object in windowAddContact.selectedContacts)  {

  if(contacts.indexOf(i) == -1) {

    contacts.push(i);               
  }
}

contactList.dataProvider = contacts;                            

1 个答案:

答案 0 :(得分:0)

鉴于代码;你提供了;我不希望indexOf返回除-1之外的任何内容;除非你在windowAddContact.selectedContacts中有多个同一个对象的实例;这是可能但似乎不太可能。

contacts数组从空开始,所有这些代码都是将项目从集合复制到数组中。试试这个:

var contacts:Array = new Array();
contacts.add(windowAddContact.selectedContacts[0]);
for each(var i:Object in windowAddContact.selectedContacts)  {

  if(contacts.indexOf(i) == -1) {

    contacts.push(i);               
  }
}

我敢打赌你会看到indexOf(i)返回-1以外的东西。不过,我不清楚你要做什么。为什么循环必要?你不能这样做:

contactList.dataProvider = windowAddContact.selectedContacts;