构建曲线的数据(将横向对象数组中的数据组成纵向的曲线数据)
在做能源管理项目的时候,有一个实际的需求,后台返回一连串的多个目标值的对象数组,但是需要从数据字典中获取到目标值得个数,然后组成需要曲线数据格式,具体看代码
后台返回过来的数据如下
var rowData=[ { data1:1, data2:2, data3:3, data4:4, data5:5, actualValue:10 },{ data1:11, data2:22, data3:33, data4:44, data5:55, actualValue:20 },{ data1:111, data2:222, data3:333, data4:444, data5:555, actualValue:30 }, ]
从后台可以获取到一个动态的值(目标值的个数,如果为3,意思就是有三个目标值)
//从后台可以获取到一个动态的值(目标值的个数,如果为3,意思就是有三个目标值) var targerIndex=3; /* var resultArr= [ { type:"bar", name:'目标值1', data:[1,11,111] }, { type:"bar", name:'目标值2', data:[2,22,222] }, { type:"bar", name:'目标值3', data:[3,33,333] }, { type:"bar", name:'实际值', data:[10,20,30] } ]*/ //第一步:组成临时的二维数组,里面包含所有目标值与实际值 /* [ [1,2,3,10], [11,22,33,20], [111,222,333,30], ]*/
开始组数据
//第一步:组成临时的二维数组,里面包含所有目标值与实际值 /* [ [1,2,3,10], [11,22,33,20], [111,222,333,30], ]*/ var tempArr=[]; for(var i=0;i<rowData.length;i++){ var _arr=[]; for(var j=0;j<targerIndex;j++){ _arr.push(rowData[i]["data"+(j+1)]); } _arr.push(rowData[i].actualValue); tempArr.push(_arr); } //第二步:根据二维数组构建曲线的数据(重要) var series=[]; for(var m=0;m<targerIndex+1;m++){ series[m]={ name:m==targerIndex?"实际值":'目标值'+(m+1), type:"bar", data:getData(m) } } console.log(series); function getData(index){ var aryData=[]; for(var i=0;i<tempArr.length;i++){ aryData.push(tempArr[i][index]) } return aryData; }
注意:以上的方式主要在构建曲线的时候,这种组装数据的方式