Arrays 如何迭代循环,从数组的最后一个元素开始,然后继续到序列中的下一个元素?(不倒车)

Arrays 如何迭代循环,从数组的最后一个元素开始,然后继续到序列中的下一个元素?(不倒车),arrays,swift,loops,Arrays,Swift,Loops,逻辑:从最后一个元素开始迭代时,索引可以减1。如果我尝试将数组转换为索引,则输出是奇怪的 //电流输出[0,1,2,3,4] //预期输出[5,1,2,3,4]从示例输出中可以明显看出,您只需先打印最后一个元素,然后在数组中循环,直到最后一个元素 你可以像这样做 var index = -1 var array: Any [1,2,3,4,5] for index in array { print(array.index) index += 1 } 打印(数组[array.coun

逻辑:从最后一个元素开始迭代时,索引可以减1。如果我尝试将数组转换为索引,则输出是奇怪的

//电流输出[0,1,2,3,4]
//预期输出[5,1,2,3,4]

从示例输出中可以明显看出,您只需先打印最后一个元素,然后在
数组中循环,直到最后一个元素

你可以像这样做

var index = -1
var array: Any [1,2,3,4,5]
for index in array {
  print(array.index)
  index += 1 
} 
打印(数组[array.count-1])
因为我在0。。
没有必要纠正循环

我不知道你为什么要这样做,但借助一些技巧,你可以得到你想要的。 谢谢


我建议使用映射。此解决方案适用于任何负位移:

     var index = Int()
    var array = [1,2,3,4,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 first index in array
    for index in array {
      print(index)
    } 
index will come = [5,1,2,3,4]
let shift=-11
让数组=[1,2,3,4,5]
设arrayLength=array.count
let index=shift%排列长度
设indexArray=array.Indexs.map{$0+index<0?$0+index+arrayLength:$0+index}
让outputArray=indexArray.map{array[$0]}
打印(输出阵列)
//印刷品[5,1,2,3,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, 2, 3, 4]

下面是一种在one for循环中完成所有操作的方法

var array = [1, 2, 3, 4, 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, 1, 2, 3, 4]

对于0..=0中的i&&n您的代码,它甚至不是有效的Swift语法,因此当前输出将不存在。请编辑您的问题并显示您的实际代码。
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, 2, 3, 4]
var array = [1, 2, 3, 4, 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, 1, 2, 3, 4]
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])
    }
}