Swift:For循环按大于1的索引遍历枚举数组
Swift: For Loop to iterate through enumerated array by index greater than 1
有没有办法使用 .enumerated() 和 stride 通过索引大于 1 的字符串数组使用 for-in 循环,以保持索引和值?
例如,如果我有数组
var testArray2: [String] = ["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)")
}
您可以通过两种方式获得所需的输出。
仅使用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])")
}
将 enumerated()
与 for in
和 where
结合使用。
for (index,item) in testArray2.enumerated() where index % 2 == 0 {
print("position \(index) : \(item)")
}
要大步迭代,您可以使用 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({([=11=], testArray2[[=11=]])}) {
// do stuff
}
有没有办法使用 .enumerated() 和 stride 通过索引大于 1 的字符串数组使用 for-in 循环,以保持索引和值?
例如,如果我有数组
var testArray2: [String] = ["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)")
}
您可以通过两种方式获得所需的输出。
仅使用
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])") }
将
enumerated()
与for in
和where
结合使用。for (index,item) in testArray2.enumerated() where index % 2 == 0 { print("position \(index) : \(item)") }
要大步迭代,您可以使用 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({([=11=], testArray2[[=11=]])}) {
// do stuff
}