如何迭代从数组的最后一个元素开始并按顺序进行到下一个循环的循环? 不倒车

问题描述

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])
    }
}

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...