如何删除数组中的项目?
我正在使用Swift进行编码,并且混淆了一个问题。 当我在数组的枚举期间尝试从数组中删除一个项时,我遇到了索引超出范围错误 。
这是我的错误代码:
var array :[Int] = [0,1,2,3,4,5] for (index, number) in array.enumerate() { if array[index] == 2 { array.removeAtIndex(index) // Fatal error: Index out of range } }
这是否意味着在每个for循环期间都不会调用array.enumerate()?
我必须改变我的代码:
for number in array { if number == 2 || number == 5 { array.removeAtIndex(array.indexOf(number)!) } }
要么
var index = 0 repeat { if array[index] == 2 || array[index] == 4 { array.removeAtIndex(index) } index += 1 } while(index < array.count)
您在枚举相同的数组时同时删除项目。 请改用filter:
var array: [Int] = [0,1,2,3,4,5] array = array.filter{$0 != 2}
或者,对于多个值,请使用Set
:
let unwantedValues: Set = [2, 4, 5] array = array.filter{!unwantedValues.contains($0)}
同一行:
array = array.filter{!Set([2, 4, 5]).contains($0)}