好吧,这不应该太难,但周日早上证明我错了......
我有一个带结构的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?
答案 0 :(得分:3)
filter
过滤所有项目符合条件。
index
会返回与条件匹配的第一项的索引。
func removePersonsWith(name: String) {
if let index = myPersons.index(where: {$0.name == name}) {
myPersons.remove(at: index)
}
}
但是该功能的名称具有误导性。它应该是removeAPersonWith
; - )