Apache flex 检查dataprovider中是否存在项

Apache flex 检查dataprovider中是否存在项,apache-flex,dataprovider,Apache 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); } }

下午好

在添加数据提供程序之前,我需要检查该项是否已存在。但是当我尝试在数组中执行此检查时,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;                            

给定代码;你提供了;我不希望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; 

谢谢你的帮助。我不能这样做:contactList.dataProvider=windowAddContact.selectedContacts;因为在添加之前,我需要检查我的数据提供程序中是否已经存在联系人。indexOf方法不适用于阵列触点。我不知道为什么。我正在尝试创建一个进行此验证的方法:var contacts:Array=new Array();对于每个(变量i:windowAddContact.selectedContacts中的对象){if(contacts.indexOf(i)=-1){contacts.push(i);}}}contactList.dataProvider=contacts;公共函数toAdd(obj:Object):布尔{for each(var i1:contacts中的对象){for(var i2:int=0;i2