2016-11-16 36 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