我有这样的数组:
val a = Array(1,Array(1,2))
想获得像Array(1,1,2)
似乎a.flatten
无效。我收到了一个错误:No implicit view available from Any => Traversable[U].
我该怎么做?
答案 0 :(得分:0)
您可以使用flatMap
,如下所示:
a.flatMap {
case x: Int => Array(x)
case a: Array[Int] => a
}
答案 1 :(得分:0)
如果您不熟悉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)