按项目索引过滤列表?

Cor*_*ein 6 scala

val data = List("foo", "bar", "bash")
val selection = List(0, 2)
val selectedData = data.filter(datum => selection.contains(datum.MYINDEX))
//                                                  INVALID CODE HERE ^
// selectedData: List("foo", "bash")
Run Code Online (Sandbox Code Playgroud)

假设我想过滤List给定的选定索引列表.如果在filter方法中,我可以引用列表项的索引,那么我可以如上所述解决这个问题,但datum.MYINDEX在上述情况下无效.

我怎么能这样做呢?

Mic*_*jac 8

如何使用zipWithIndex保持对项目索引的引用,如此过滤,然后将索引映射掉?

data.zipWithIndex
    .filter{ case (datum, index) => selection.contains(index) }
    .map(_._1)
Run Code Online (Sandbox Code Playgroud)

  • @samthebest - 编码和缩进风格取决于回答者,我们应该遵循他们的偏好.如果回答者不想要您的更改,请不要强制它们.接受他们有不同的风格并继续前进. (4认同)