同时迭代两个数组
我是Swift新手。 我一直在做Java编程。 我有一个在Swift中编写的场景。
以下代码是用Java编写的。 我需要在Swift中编写以下场景
// With String array - strArr1 String strArr1[] = {"Some1","Some2"} String strArr2[] = {"Somethingelse1","Somethingelse2"} for( int i=0;i< strArr1.length;i++){ System.out.println(strArr1[i] + " - "+ strArr2[i]); }
我有一些快速的数组
var strArr1: [String] = ["Some1","Some2"] var strArr2: [String] = ["Somethingelse1","Somethingelse2"] for data in strArr1{ println(data) } for data in strArr2{ println(data) } // I need to loop over in single for loop based on index.
你可以请你提供基于索引的循环语法的帮助
你可以使用zip()
,它从两个给定的序列中创build一个序列对:
let strArr1 = ["Some1", "Some2"] let strArr2 = ["Somethingelse1", "Somethingelse2"] for (e1, e2) in zip(strArr1, strArr2) { print("\(e1) - \(e2)") }
该序列仅枚举给定序列/数组的“公共元素”。 如果它们具有不同的长度,则较长的数组/序列的附加元素被简单地忽略。
你也可以enumerate
一个数组,并使用索引来查看第二个数组:
Swift 1.2:
for (index, element) in enumerate(strArr1) { println(element) println(strArr2[index]) }
Swift 2:
for (index, element) in strArr1.enumerate() { print(element) print(strArr2[index]) }
Swift 3:
for (index, element) in strArr1.enumerated() { print(element) print(strArr2[index]) }
尝试这个:
zip([0,2,4,6], [1,3,5,7]).forEach { print($0,$1) } zip([0,2,4,6], [1,3,5,7]).forEach { print($0.0,$0.1) }
你可以使用Range
如果你仍然想for in
。
var strArr1: [String] = ["Some1","Some2"] var strArr2: [String] = ["Somethingelse1","Somethingelse2"] for i in Range(start: 0, end: strArr1.count) { println(strArr1[i] + " - " + strArr2[i]) }
for(var i = 0; i < strArr1.count ; i++) { println(strArr1[i] + strArr2[i]) }
这应该做到这一点。 从来没有使用过,所以一定要testing。