假设我有一个Seq[Array[String]]
形式的二维数组,其中第一个索引显示行。第一行始终是标题行。目标是过滤掉那些具有空标题的列。例如,如果表的内容是(3乘3,第一行作为标题):
, t,
a, c, e
b, d, f
或
val table = Seq(Array("", "t", ""), Array("a", "c", "e"), Array("b", "d", "f"))
删除空标题后,显示所需的输出:
t
c
d
filter
一个数组很容易,但这里的硬度是,需要根据标题行过滤所有数组。知道怎么做吗?
答案 0 :(得分:4)
尝试:
val indices = table.head.zipWithIndex
.filter { case (t, i) => t != "" }
.map { case (t, i) => i }
table.map(indices collect _)
// > res: Seq[Array[String]] = List(Array(t), Array(c), Array(d))
答案 1 :(得分:2)
执行此操作的一种方法是使用transpose
运算符:
table.transpose.filterNot(_.head.isEmpty)
> Seq[Seq[String]] = List(List(t, c, d))