2016-11-16 70 views
3

我有兩個陣列是這樣的:的毗連2 Scala的陣列

val l1 = Array((1,2,3), (6,2,-3), (6,2,-4)) 
val l2 = Array("a","b","c") 

我想放L2的值在陣列在L1相同的位置,將獲得的最終陣列那樣

Array((1,2,3,"a"), (6,2,-3,"b"), (6,2,-4,"c")) 

我在想是這樣的:

val l3 = l1.map(code...) 

但我不知道如何地圖上L1期間L2迭代。
你有什麼想法嗎?

回答

6

以這種方式組合集合可以用Zipping完成。

l1.zip(l2).map{ case (x,y) => (x._1, x._2, x._3, y) } 
1

您需要map覆蓋用於訪問每個陣列元素的索引。

(0 until l1.length).map{ idx => 
    (l1(idx)._1, l1(idx)._2, l1(idx)._3, l2(idx)) 
} 
res0: IndexedSeq[(Int, Int, Int, Char)] = Vector((1,2,3,a), (6,2,-3,b), (6,2,-4,c)) 
+0

非常感謝您 –

+1

您應該使用'l1.indices'而不是'(0直到l1.length)'來防止逐個錯誤。 –

+0

@ corvus_192,一個很好的建議,但馬里奧斯仍然有更好的解決方案。 – jwvh