[4] 删除数组中特定元素

问题描述:

删除数组中满足某一条件的元素。

var arr = [1, 3, 5, 7, 9, 2, 4, 6]
for (index, num) in arr.enumerated() {

    if num <= 2 {
        arr.remove(at: index)
    }
}
print(arr) // [3, 5, 7, 9, 2, 6]

上述代码的结果显然是错误的。原因是arr.enumerated() 返回了一个新的数组。

解决方案:

  1. 方案一:
var arr = [1, 3, 5, 7, 9, 2, 4, 6]
for num in arr {
    if num <= 2 {
        if let newIndex = arr.index(of: num) {
            arr.remove(at: newIndex)
        }
    }
}
print(arr) // [3, 5, 7, 9, 4, 6]
  1. 方案二:
let arr = [1, 3, 5, 7, 9, 2, 4, 6]
let newArr = arr.filter {
    return $0 > 2
}
print(newArr) // [3, 5, 7, 9, 4, 6]

你可能感兴趣的:([4] 删除数组中特定元素)