0

下午好。

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

1 回答 1

0

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

联系人数组一开始是空的,这段代码所做的只是将集合中的项目复制到数组中。尝试这个:

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; 
于 2013-03-19T00:41:03.313 回答