如何解决如何迭代从数组的最后一个元素开始并按顺序进行到下一个循环的循环? 不倒车
var index = -1
var array: Any [1,2,3,4,5]
for index in array {
print(array.index)
index += 1
}
逻辑:从最后一个元素开始迭代时,索引可以减1。如果我尝试将数组转换为索引,则输出将很奇怪。
//电流输出[0,1,4] //预期的输出[5,4]
解决方法
我建议使用映射。此解决方案可应对任何负面变化:
let shift = -11
let array = [1,2,3,4,5]
let arrayLength = array.count
let index = shift % arrayLength
let indexArray = array.indices.map { $0 + index < 0 ? $0 + index + arrayLength: $0 + index}
let outputArray = indexArray.map { array[$0] }
print(outputArray)
// prints [5,1,4]
,
从示例输出中可以明显看出,您只想先打印最后一个元素,然后循环遍历array
直到最后一个元素。
您可以简单地这样做,
print(array[array.count-1])
for i in 0..<array.count-1 {
print(array[i])
}
,
var index = Int()
var array = [1,5]
let lastValue = array.last // first get the last value in variable
array.removeLast() // then remove your last value from array
array.insert(lastValue!,at: 0) // then add your last value to
print(array)
response = [5,4]
没有必要纠正循环
我不知道为什么要这么做,但是借助一些技巧,您可以获得所需的东西。 谢谢
var index = Int()
var array = [1,at: 0) // then add your last value to first index in array
for index in array {
print(index)
}
index will come = [5,4]
,
如果您需要编辑数组,这是一种快速的方法:
var array = [1,5]
let lastElement = array.popLast() // Remove and store the last item
array = [lastElement].compactMap({ $0 }) + array // Append it at the begining
print(array)
// Prints [5,4]
,
这是在for循环内完成所有操作的一种方法
for i in 0..<array.count {
print(array[i < 1 ? i + array.count - 1 : i - 1])
}
这可以写为通用函数,我们可以从任何位置开始
func printArray<T>(_ array: [T],shift n: Int) {
guard n >= 0 && n <= array.count else {
return
}
for i in 0..<array.count {
print(array[i < n ? i + array.count - n : i - n])
}
}