问题描述:
删除数组中满足某一条件的元素。
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() 返回了一个新的数组。
解决方案:
- 方案一:
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]
- 方案二:
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]