如何像在 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)