【问题标题】:How to reverse an array in Swift?如何在 Swift 中反转数组?
【发布时间】:2016-10-06 02:20:54
【问题描述】:

如何以相反的顺序打印以下数组?

var toDoListReverse = ["Take out garbage", "Pay bills", "Cross off finished items"]

【问题讨论】:

  • 那么reversed()到底有什么问题?这种人为限制的原因是什么? reversed() 很懒惰而且效率很高,为什么不使用它呢?你有什么家庭作业吗?您在这里的真正目标是什么?您需要反转数组还是需要向后枚举数组?什么?

标签: swift swift3 swift4


【解决方案1】:

这是 swift 3 的代码

let array = ["IOS A", "IOS B", "IOS C"]
for item in array.reversed() {
    print("Found \(item)")
}

【讨论】:

    【解决方案2】:

    以相反的顺序打印数组

    像这样:

    toDoListReverse.reversed().forEach {print($0)}
    

    【讨论】:

    • 当然可以。我仍然在为最初的问题甚至是什么而摸不着头脑。下次,请提出您真正想知道答案的问题。
    • @matt 人力资源部。我假设这个练习是在不使用reversed() 的情况下完成的。我可能误解了这个问题。
    【解决方案3】:
    func reverseArray(values: [Int]) {
    
        var reversedArray : [Int] = []
        var lastElement : Int = -1
        for _ in values {
            lastElement += 1
        }
        for _ in values {
            reversedArray.append(values[lastElement])
            lastElement -= 1
        }
        print("reversed Array is \(reversedArray)")
    }
    

    你可以这样调用这个函数:

    reverseArray(values: [1, 2, 3 , 90, 9888 , 654])

    【讨论】:

      【解决方案4】:
       //suppose you set your array in   self.arrOfJobsList
      
       self.arrOfJobsList =  NSMutableArray(array: self.arrOfJobsList.reverseObjectEnumerator().allObjects).mutableCopy() as! NSMutableArray
      

      【讨论】:

      • 感谢您提供此代码 sn-p,它可能会提供一些有限的即时帮助。 proper explanation 将通过展示为什么这是解决问题的好方法,并使其对有其他类似问题的未来读者更有用,从而大大提高其长期价值。请edit您的回答添加一些解释,包括您所做的假设。
      【解决方案5】:

      使用 stride 函数可以使用下面的另一种方法

      let names: [String] = ["Apple", "Microsoft", "Sony", "Lenovo", "LG"]
      var reversedNames = [String]()
      for arrayIndex in stride(from: names.count - 1, through: 0, by: -1) {
          reversedNames.append(names[arrayIndex])
      }
      

      并使用 for 循环作为

      let names = ["Apple", "Microsoft", "Sony", "Lenovo", "LG"]
      let totalIndices = names.count - 1
      var reversedNames = [String]()
      for arrayIndex in 0...totalIndices {
          reversedNames.append(names[totalIndices - arrayIndex])
      }
      

      【讨论】:

        【解决方案6】:

        如果你不想使用 Swift 提供的“reversed()”方法。

        您可以使用下面的通用代码代码。

        func arrayReversal<T>(array: [T]) {
        
          var reverseArr = [T]()
          var count = array.count - 1
        
          while count >= 0 {
            reverseArr.append(array[count])
            count = count - 1
          }
        
          print(reverseArr)
        }
        
        var namesArray = ["Apple", "Microsoft", "Sony", "Lenovo", "Asus"]
        arrayReversal(array: namesArray)
        
        OR
        
        let integerArray = [1,3,2,4]
        arrayReversal(array: integerArray)
        

        【讨论】:

          【解决方案7】:

          斯威夫特 4

          let numbers = [10, 50, 40]
          
          for number in numbers.reversed() {
          
              print(number)
          }
          

          // 通过调用 reversed() 方法,我们可以在不为其元素分配新空间的情况下反转 Array。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2021-12-21
            • 1970-01-01
            • 2017-04-26
            • 1970-01-01
            • 2012-04-08
            • 1970-01-01
            • 1970-01-01
            • 2020-01-04
            相关资源
            最近更新 更多