scala 導出及相關函數使用

前端點擊調用

先前端ajax 調用後端服務,包括一些傳參和url 的設置

這裏有個 處理函數 each 的使用
具體例子如下:

var tables = $("#Table>thead>tr>th");
   //
    Table.each(function(i, item) {
            if (i < 5) arry.push($(item).context.childNodes[0].textContent);
        });
        str = arry.join(";");

後端sql 查詢

例如 sql 語句查詢下列字段

class Excel(req: PciListReq)  {
  override def genSql: String = {
    s"""SELECT
       age AS age1,
       report,
       name AS name1,
       age AS age2,
       report2,
       usname AS name2,
       Cost
       Count 
       FROM teacher
       WHERE ${req.geo.class} AND Year=${req.time.getYear()} AND Week=${req.time.timeSeg.week}
       ORDER BY Cost ASC,MRCount DESC"""
  }
}

sql 返回結果於下列:

age1 report name1 age2 report2 name2 Cost Count
3 25 1600 4 26 1601 3 25

但是導出的結果要按類似於這種格式導出

age report name Cost Count
3 25 1600 3 25
4 26 1601 3 25

要得到這個形式 主要利用 take() 和 takeright() 函數

具體用法如下

class LineSplitting(req: List[List[String]]) {

def splite2(): List[List[String]] = {
    val list1: List[List[String]] = req.map(x => (x.take(3) :: x.takeRight(2) :: Nil).flatten)
    val list2: List[List[String]] = req.map(x => ( x.takeRight(5) :: Nil).flatten)
    (list1 zip list2).map(x => List(x._1, x._2)).flatten
  }
  }

object LineSplitting {
  def apply(req: List[List[String]]): LineSplitting = new LineSplitting(req)
}

把 (-1,-1) 的list 置爲 空

val valueList = result.value.map(x => {
      val tails = if (x.takeRight(2) == List("-1","-1")) List("","") else x.takeRight(2)
      x.take(4):::tails
    })

flatten 函數

flatten可以把嵌套的結構展開.

Scala> List(List(1,2),List(3,4)).flatten
res0: List[Int] = List(1, 2, 3, 4)

zip函數

zip方法將兩個集合結合在一起

scala>  List('a,'b,'c).zip(List(1,2,3))
res32: List[(Symbol, Int)] = List(('a,1), ('b,2), ('c,3))

map

map方法可以將某個函數應用到集合中的每個元素併產出其結果的集合,比如

val names=List(“a”,”b”,”c”)
可以用

names.map(_.toUpperCase)
得到List(“A”,”B”,”C”)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章