2016-12-04 6 views
2

よしと一つだけのアイテムを削除し、これはあまりにも難しいことではないはずですが、日曜日の朝は私が間違っていることを証明...スウィフト配列の特定の値

私は構造体とArrayを持って、そして唯一の構造体それを削除したいですnameプロパティとStringを一致させます。たとえば、次のように

struct Person { 
    let name: String 
} 

var myPersons = 
[Person(name: "Jim"), 
Person(name: "Bob"), 
Person(name: "Julie"), 
Person(name: "Bob")] 

func removePersonsWith(name: String) { 
    myPersons = myPersons.filter { $0.name != name } 
} 

removePersonsWith(name: "Bob") 
print(myPersons) 

での結果:

[Person(name: "Jim"), Person(name: "Julie")] 

しかし、どのように私はボブを削除するには?

+0

私は2つのボブの違いを教えてください、その後、私はあなたにどのように伝えます。しかし、そうでない場合は、ブールフラグを設定することができます。フィルタがfalseに設定されると、ループを終了します。 – Honey

+0

2つのボブはまったく同じで、互いにクローンですが、そのうちの1つを削除したいだけです。 – Koen

+0

私はなぜあなたはそのような機能性を持っているのだろうかと不思議です。それは重複を削除することですか?または、他の何か? – Honey

答えて

3
  • filterフィルタ条件に一致するすべての項目

  • indexは、最初の項目の条件に一致するのインデックスを返します。関数の名前が紛らわしいですが

    func removePersonsWith(name: String) { 
        if let index = myPersons.index(where: {$0.name == name}) { 
         myPersons.remove(at: index) 
        } 
    } 
    

removeAPersonWith ;-)

+0

OPが最終的に望んでいるとは思いません。彼は5つのボブがあれば4つを取り除きたいと思っています。コーエン、あなたが欲しいものを教えてください。そうでなければ良い答え – Honey

+0

いいえ、私は1つのボブを削除したい – Koen

関連する問題