1

有没有办法使用 .enumerated() 和 stride 通过索引大于 1 的字符串数组使用 for-in 循环,以保持索引和值?

例如,如果我有数组

var testArray2:[字符串] = [“a”,“b”,“c”,“d”,“e”]

我想通过使用 testArray2.enumerated() 并使用 stride by 2 来循环输出:

0, a
2, c
4, e

所以理想情况下是这样的;但是,此代码将不起作用:

for (index, str) in stride(from: 0, to: testArray2.count, by: 2){
    print("position \(index) : \(str)")
}
4

2 回答 2

6

您有两种方法可以获得所需的输出。

  1. 仅使用stride

    var testArray2: [String] = ["a", "b", "c", "d", "e"]
    
    for index in stride(from: 0, to: testArray2.count, by: 2) {
        print("position \(index) : \(testArray2[index])")
    }
    
  2. enumerated()for in和一起使用where

    for (index,item) in testArray2.enumerated() where index % 2 == 0 {
        print("position \(index) : \(item)")
    }
    
于 2017-04-25T05:40:17.503 回答
3

要大步迭代,您可以使用一个where子句:

for (index, element) in testArray2.enumerated() where index % 2 == 0 {
    // do stuff
}

另一种可能的方法是从索引映射到索引和值的元组集合:

for (index, element) in stride(from: 0, to: testArray2.count, by: 2).map({($0, testArray2[$0])}) {
    // do stuff
}
于 2017-04-25T05:40:42.830 回答