我正在寻找一种方法来根据范围标准从给定的数据结构Array [Array [(String,Int)]]中获取所有对。
澄清更多:考虑以下示例:
val block= Array(Array(("foo",0),("bar",1),("foobar",2),("barfoo",3)),Array(("FOO",0),("BAR",1),("FOOBAR",2),("BARFOO",3),("FOOFOO",4)))
我想从索引3开始获取字符串数组,如下所示:
Array(Array("barfoo"),Array("BARFOO", "FOOFOO"))
试过这样:
blocks.filter {case(k,v)=> V> = 3} .keys
无法构造它,因为所需的类型需要是Array [(String,Int)]才能进行过滤。我知道我之前错过了地图,但似乎无法绕过。
答案 0 :(得分:2)
由于 ViewData["Title"] = Localizer["HomeTitle"];
的类型为block
,因此在使用Array[Array[(String, Int)]]
之前,您需要使用filter
操作。使用map
可以获得所需的结果。
答案 1 :(得分:1)
如果元组的第二部分为< 3
,则可以删除元素:
scala> val block = Array(
| Array(("foo",0),("bar",1),("foobar",2),("barfoo",3)),
| Array(("FOO",0),("BAR",1),("FOOBAR",2),("BARFOO",3),("FOOFOO",4))
| )
block: Array[Array[(String, Int)]] = Array(Array((foo,0), (bar,1), (foobar,2), (barfoo,3)), Array((FOO,0), (BAR,1), (FOOBAR,2), (BARFOO,3), (FOOFOO,4)))
scala> block.map(_.dropWhile(_._2 < 3).map(_._1).toArray)
res0: Array[Array[String]] = Array(Array(barfoo), Array(BARFOO, FOOFOO))