如何将字符串(Array [Array [Array [String]])的数组映射到double(Array [Array [Double []]))的数组?

时间:2019-11-17 18:37:43

标签: arrays string scala list double

我有一个问题,假设我有一个String个数组

Array[Array[String]] = Array(Array(0.1, 0.1, 0.1), Array(0.2, 0.2, 0.2))

,我想将其转换为Array[Array[Double]]。我尝试使用map并加倍

 x(0).map(x => x.toDouble)

但是如何更改其余的数组条目?有人可以帮助我如何将整个数组项更改为双精度吗?这是可以通过循环还是map来实现的?

1 个答案:

答案 0 :(得分:4)

只需将嵌套的mapTry一起使用即可处理非数字元素,如下所示:

import scala.util.{Try, Success, Failure}

val arr = Array(Array("0.1", "0.2", "0.3"), Array("0.4", "0.5", "xyz"))

arr.map( _.map{ s =>
  Try(s.toDouble) match {
    case Success(d) => d
    case Failure(_) => Double.MinValue  // Or any preferred default value
  }
} )
// res1: Array[Array[Double]] =
//   Array(Array(0.1, 0.2, 0.3), Array(0.4, 0.5, -1.7976931348623157E308))