如何在Swift中不使用“ .reverse()”来反转数组?

发布于 2021-01-31 23:40:08

我有数组,需要不使用Array.reverse方法而仅通过for循环将其反转。

var names:[String] = ["Apple", "Microsoft", "Sony", "Lenovo", "Asus"]
关注者
0
被浏览
102
1 个回答
  • 面试哥
    面试哥 2021-01-31
    为面试而生,有面试问题,就找面试哥。

    这是@Abhinav的答案翻译为 Swift 2.2

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

    使用此代码不会给您有关不赞成使用C样式for循环或使用的任何错误或警告--

    Swift 3-当前:

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

    另外,您可以正常循环并每次减去:

    let names = ["Apple", "Microsoft", "Sony", "Lenovo", "Asus"]
    
    let totalIndices = names.count - 1 // We get this value one time instead of once per iteration.
    
    var reversedNames = [String]()
    
    for arrayIndex in 0...totalIndices {
        reversedNames.append(names[totalIndices - arrayIndex])
    }
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看