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 に答える