如何像在 Scala 中那样展平数组
How to flatten an array like in Scala
我有一个这样的数组:
val a = Array(1,Array(1,2))
想要得到像 Array(1,1,2)
这样的结果
好像a.flatten
不行。我收到一个错误:No implicit view available from Any => Traversable[U].
我该怎么做?
您可以使用 flatMap
,如下所示:
a.flatMap {
case x: Int => Array(x)
case a: Array[Int] => a
}
如果您不熟悉 flatMap 函数,那么您可以使用 map 和 flatten 函数完成相同的任务。
首先使用映射函数和模式匹配将Array[Any]
转换为Array[Array[Int]]
val arr = Array(1, 2, Array(3, 4))
val arrOfArrs = arr.map { element =>
element match {
case element:Int=>Array(element)
case element:Array[Int]=>element
}
}
以上代码的示例输出将是
arrOfArrs: Array[Array[Int]] = Array(Array(1), Array(2), Array(3, 4))
现在您可以使用 flatten
函数
轻松展平 arrOfArrs
arrOfArrs.flatten
res3: Array[Int] = Array(1, 2, 3, 4)
我有一个这样的数组:
val a = Array(1,Array(1,2))
想要得到像 Array(1,1,2)
好像a.flatten
不行。我收到一个错误:No implicit view available from Any => Traversable[U].
我该怎么做?
您可以使用 flatMap
,如下所示:
a.flatMap {
case x: Int => Array(x)
case a: Array[Int] => a
}
如果您不熟悉 flatMap 函数,那么您可以使用 map 和 flatten 函数完成相同的任务。
首先使用映射函数和模式匹配将Array[Any]
转换为Array[Array[Int]]
val arr = Array(1, 2, Array(3, 4))
val arrOfArrs = arr.map { element =>
element match {
case element:Int=>Array(element)
case element:Array[Int]=>element
}
}
以上代码的示例输出将是
arrOfArrs: Array[Array[Int]] = Array(Array(1), Array(2), Array(3, 4))
现在您可以使用 flatten
函数
arrOfArrs.flatten
res3: Array[Int] = Array(1, 2, 3, 4)