flatMap
is the way to go here:
val transformed =
the_map.flatMap {
case (k, v) =>
if (k < 10)
Some(v * 10)
else if (k > 100 && k < 400)
Some(v * 5)
else None
}
You could also do it explicitly with a fold (though I find it less clear than the flatMap
approach):
val transformed2 =
the_map.foldLeft(Vector.empty[Int]) {
case (z, (k, v)) =>
if (k < 10)
z :+ (v * 10)
else if (k > 100 && k < 400)
z :+ (v * 5)
else z
}