Swift Array只删除一个具有特定值的项目

时间:2016-12-04 16:00:21

标签: arrays swift3

好吧,这不应该太难,但周日早上证明我错了......

我有一个带结构的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")]

但是我如何只删除一个 Bob?

1 个答案:

答案 0 :(得分:3)

  • filter过滤所有项目符合条件。

  • index会返回与条件匹配的第一项的索引。

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

但是该功能的名称具有误导性。它应该是removeAPersonWith; - )