在数组中删除数据时,数组的序号会发生改变,以下方法实现了 删除数组中指定值的所有条目。
//获取正确的删除索引
func getRemoveIndex<T: Equatable>(value: T, array: [T]) -> [Int]{
var indexArray = [Int]()
var correctArray = [Int]()
//获取指定值在数组中的索引
for (index,_) in enumerate(array) {
if array[index] == value {
indexArray.append(index)
}
}
//计算正确的删除索引
for (index, originIndex) in enumerate(indexArray){
//指定值索引减去索引数组的索引
var correctIndex = originIndex - index
//添加到正确的索引数组中
correctArray.append(correctIndex)
}
return correctArray
}
//从数组中删除指定元素
func removeValueFromArray<T: Equatable>(value: T, inout array: [T]){
var correctArray = getRemoveIndex(value, array)
//从原数组中删除指定元素
for index in correctArray{
array.removeAtIndex(index)
}
}