如何删除数组中的项目?
How to remove item in Array?
我正在用 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
}
}
这是否意味着 array.enumerate() 不会在每个 for 循环中被调用?
我必须这样更改我的代码:
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)
您在枚举同一个数组时同时删除了项目。改用过滤器:
var array: [Int] = [0,1,2,3,4,5]
array = array.filter{[=10=] != 2}
或者,对于多个值,使用 Set
:
let unwantedValues: Set<Int> = [2, 4, 5]
array = array.filter{!unwantedValues.contains([=11=])}
一行相同:
array = array.filter{!Set([2, 4, 5]).contains([=12=])}
我正在用 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
}
}
这是否意味着 array.enumerate() 不会在每个 for 循环中被调用?
我必须这样更改我的代码:
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)
您在枚举同一个数组时同时删除了项目。改用过滤器:
var array: [Int] = [0,1,2,3,4,5]
array = array.filter{[=10=] != 2}
或者,对于多个值,使用 Set
:
let unwantedValues: Set<Int> = [2, 4, 5]
array = array.filter{!unwantedValues.contains([=11=])}
一行相同:
array = array.filter{!Set([2, 4, 5]).contains([=12=])}