构建曲线的数据(将横向对象数组中的数据组成纵向的曲线数据)

在做能源管理项目的时候,有一个实际的需求,后台返回一连串的多个目标值的对象数组,但是需要从数据字典中获取到目标值得个数,然后组成需要曲线数据格式,具体看代码

后台返回过来的数据如下

 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;
}

注意:以上的方式主要在构建曲线的时候,这种组装数据的方式

 
原文地址:https://www.cnblogs.com/pengfei25/p/7906834.html