【问题标题】:How to flatten an array like in Scala如何像在 Scala 中一样展平数组
【发布时间】:2018-11-19 18:25:40
【问题描述】:

我有一个这样的数组:

val a = Array(1,Array(1,2))

想要得到类似Array(1,1,2)的结果

a.flatten 好像不行。我收到一个错误:No implicit view available from Any => Traversable[U].

我该怎么做?

【问题讨论】:

  • 所以你得到Array[Any] ...为什么?可能需要检查“之前”。

标签: arrays scala flatten


【解决方案1】:

您可以使用flatMap,如下所示:

a.flatMap {
  case x: Int => Array(x)
  case a: Array[Int] => a
}

【讨论】:

    【解决方案2】:

    如果您不熟悉 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)
    

    【讨论】:

      猜你喜欢
      • 2012-05-22
      • 2019-06-23
      • 1970-01-01
      • 2022-10-24
      • 1970-01-01
      • 1970-01-01
      • 2014-05-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多