在Swift中根据其属性删除数组对象

时间:2020-09-20 18:47:24

标签: ios arrays swift

我有一个像这样的自定义数组,我想删除学生ID为4的元素

var strNames = [Student(id: 1, name: "ghj"), Student(id: 4, name: "def"), Student(id: 9, name: "bkl")]

我经典地做到了这一点。有人可以帮我用Swift方式映射吗?

 var sArray2: [Student] = []
    for item in strNames {
        if item.id != 4 {
            sArray2.append(Student(id: item.id, name: item.name))
        }
    }
strNames = sArray2

2 个答案:

答案 0 :(得分:4)

您可以使用RangeReplaceableCollection变异方法:

mutating func removeAll(where shouldBeRemoved: (Element) throws -> Bool) rethrows

在您的情况下:

strNames.removeAll { $0.id == 4 }

答案 1 :(得分:0)

您还可以使用过滤器函数根据条件进行过滤,但是过滤器函数会返回带有过滤后值的新数组

var filteredArray = strNames.filter { (eachVal) -> Bool in eachVal.id != 4 }