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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?