连接两个Scala数组

3

I have two Array like this:

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。
你有什么想法吗?

2个回答

6

使用Zip可以将集合组合在一起。

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

1
你需要对用于访问每个数组元素的索引进行映射
(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))

非常感谢。 - a.moussa
1
你应该使用 l1.indices 而不是 (0 until l1.length) 来避免因为索引错误而导致的偏差。 - corvus_192
@corvus_192,你的建议很好,但是marios仍然有更好的解决方案。 - jwvh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接