应用场景
  #
在图形开发中,我们可能需要使用js对传递过来的数据进行处理
  图形中可用转化函数
  #
  数据集转化
  #
| 函数名 | 函数说明 | 样列 | 
| ds_transform(dataset) | 行列转置 |  | 
| ds_createMap(dataset) | 将数组生成结果表示为key->[], 常用于echarts指定数据 |  | 
| ds_createMap_all(dataset) | 将二维数组转成字典[{A:A1,B:B1,C:C1},…], 常用于饼图 |  | 
| ds_mapToList(dataset) | 将字典还原成二维数组, 常用于将nosql(mongodb,es..)数据源数据处理 |  | 
| ds_pivot(dataset,indexs=null,column=null,value=null) | 将二维数组(维度…,透视列,值)透视为行转列 |  | 
| ds_tree(dataset,,label=‘label’, children=‘children’) | 将二维数组(父,子,…)转为树结构 |  | 
| ds_distinct(dataset) | 对单个或多个二维数组去重 |  | 
| ds_filter(dataset, fun) | fun为函数如: item=>item[0]==‘顺德’ |  | 
| ds_sort(dataset, index=0, asc=true) | 按照列序号排序,默认升序,index参数可以是函数,如(a,b)=>a.qty-b.qty |  | 
| ds_remove_column(dataset,remove_list=[0]) | 默认移除第一列, 也要移除指定的多个列 |  | 
| ds_split(data,sep=’,’,head_add=[]) | 将第一列拆分成多个字段,默认逗号分隔, 如果不传表头,取SQL中的字段名拆分 |  | 
| ds_sumColumn(dataset,column) | 指定列,返回加总值 |  | 
| ds_percentAcc(dataset,row) | 指定行,在数据集最下方加入累计占比,一般用于柏拉图 |  | 
| ds_formatArray(dataset, formatStr) | 将dataset中的数据遍历格式化串输出,表头为参数名,如:$name as $comment |  | 
  数据集关联
  #
| 函数名 | 函数说明 | 样列 | 
| ds_leftjoin(a,b) | 按照第一列左关联两个数据集 |  | 
| ds_crossjoin(a,b) |  |  | 
| ds_fulljoin(a,b) |  |  | 
| ds_union(a,b) | 合并两个数据集,取第一个数据集的表头 |  | 
  数据集刷新
  #
| 函数名 | 函数说明 | 样列 | 
| ds_param(name) | 传入参数名,获取图形点击时传递来的参数值 |  | 
| ds_setParam(‘参数名’, 参数值) | 设定全局参数, 此方法将自动判断当参数值为空时, 删除参数回到初始未传参状态 |  | 
| ds_refresh(序号, param=filter_param) | 刷新图形,默认采取全局参数刷新,也可指定param,参数为字典{“参数名”:“值”,…} |  | 
  数据处理
  #
| 函数名 | 函数说明 | 样列 | 
| ds_rowname(dataset,start_row=1,column=0) | 获取指定列的数据, 常用于获取维度 |  | 
| ds_toThousands(num) | 转逗号分隔的千分位 |  | 
| ds_round(num,qty=2) | 小数点处理, 默认保留两位小数 |  | 
| ds_generateLastDay(n=15, joinChat=’-’) | 生成最近几天的日期数组 |  | 
| ds_generateUUID() | 生成UUID |  | 
| new Date().format(‘yyyy-MM-dd hh:mm:ss’) | 日期格式化 |  | 
  Excel数据集
  #
| 函数名 | 函数说明 | 样列 | 
| ds_excel_refresh(dataset) | 刷新复杂报表, dataset格式:{df0:二维数组, df1:二维数组,..} |  | 
| ds_excel_value(fillCells,clear=false) | 指定单元格获取复杂报表中的数据, fillcells格式:[‘A1’,‘B2’],一般用于数据填报 |  | 
  数据上传下载
  #
| 函数名 | 函数说明 | 样列 | 
| ds_save(序号, contents) | 保存数据 |  | 
| ds_save(序号, contents, 1) | 更新数据 |  | 
| ds_download(文件名, dataset) | 下载数据 |  | 
| ds_uploadfile(file, filename, callback=null) | 上传文件 |  | 
  常用JS原生函数
  #
//数组追加
dataset.push(item)
//数组前方插入
dataset.unshit(item)
//切片
dataset = dataset.slice(1) //从序号1个开始到最最后一个
dataset = dataset.slice(5, 10) //从第序号5开始截取到第10个
dataset = dataset.slice(-3) //截取最后三个元素
//循环遍历
//for最快,但可读性比较差(smartchart推荐)
//forEach比较快,能够控制内容
//for...in比较慢,不方便
for(let i=0; i<dataset.length; i++){
  
}
  原始数据格式
  #
假设dataset的格式是, SQL = Select 维度1,维度2,数据 from xxxx, 生成的数据集如下
dataset = [['category','C1','C2'],
           ['R1',       12,  18],
	       ['R2',       10,  17] ]
  常用转化函数样列参考
  #
  生成字典表示为key->[], 常用于定制化高的图形
  #
result = ds_createMap(dataset)
结果 = {"category":['C1','C2'],
           "R1" : [12, 10],
	   "R2" : [18,  17]}
  生成非常多前端组件要求的格式
  #
result = ds_createMap_all(dataset)
结果 = [{"category":"R1", "C1": 12, "C2": 18},
       {"category":"R2", "C1": 10, "C2": 17}]
  获取列名list, 用于获取系列名
  #
result = ds_rowname(dataset)
结果 = ['R1','R2']
  将数据集行列转化, 一般用于坐标轴翻转
  #
result = ds_transform(dataset)
结果  = [['category','R1','R2'],
         ['C1',       12,  10],
	     ['C2',       18,  17]]
  两个数据集左关联, 常用于将两段查询数据合并
  #
//假设需要关联的数据集格式:
dataset2 = [['category','C3'],
            ['R1',       38],
	        ['R6',       13]]
//处理后的结果:
result = ds_leftjoin(dataset, dataset2)
结果  = [['category','C1','C2','C3'],
         ['R1',       12,  18, 38],
	     ['R2',       10,  17, 0] ]
  数据集旋转,在excel中叫透视表
  #
//比如需要将dataset3的户型变成指标
dataset3 = [['城市','户型','数量'],
             ['长沙','A',35],
             ['上海','B',19]]
//处理后的结果:
result = ds_pivot(dataset3)
结果  = [["城市","A","B"],
         ["长沙",35,0],
         ["上海",0,19]]
//多维数据的旋转,如
dataset4 = [['省份','城市','户型','数量'],
             ['湖南','长沙','A',35],
             ['上海','上海','B',19]]
result = ds_pivot(dataset4)
结果  = [["省份","城市","A","B"],
         ["湖南","长沙",35,0],
         ["上海","上海",0,19]]
result = ds_pivot(dataset4,indexs=[1,0],column=2,value=3)
结果  = [["城市","省份","A","B"],
         ["长沙","湖南",35,0],
         ["上海","上海",0,19]]
  数据集转树形结构
  #
dataset = [["father","child"],
           ["湖南","长沙"],
           ["湖南","郴州"],
           ["郴州","安仁"],
           ["广东","佛山"],
           ["广东","广州"]]
result = ds_tree(dataset)
结果 = [{"id":"湖南","label":"湖南",
        "children":
        [{"father":"湖南","child":"长沙","id":"长沙","label":"长沙"}, 
         {"father":"湖南","child":"郴州","id":"郴州","label":"郴州",
            "children": 
             [{"father":"郴州","child":"安仁","id":"安仁","label":"安仁"}]}
        ]
       },
       {"id":"广东","label":"广东",
         "children":[{"father":"广东","child":"佛山","id":"佛山","label":"佛山"},{"father":"广东","child":"广州","id":"广州","label":"广州"}]
       }
      ]
//也可以通过code的方式来避免label可能存在重名的问题
// 注意查询的表头需要select father, child, fatherName,childName
dataset = [["father","child","fatherName","childName"],
           ["A","A1","湖南","长沙"],
           ["A","A2","湖南","郴州"],
           ["A2","A2A","郴州","安仁"],
           ["B","B1","广东","佛山"],
           ["B","B2","广东","广州"]]
result = ds_tree(dataset)
  移除数据集中的某几列
  #
//比如移除第1列(序号0)
result=ds_remove_column(dataset,remove_list=[0]) 
 结果 =    [['R1','R2'],
           [12,  10],
	       [18,  17] ]