SOURCE

// 后端返回的数据
let synthesisSummary = [
    {
        workTime: 100,//累计工作时间
        nullTime: 12,// 累计空转时间
        baoyangWorkTime: 8,//累计保养时间
        leijiXfTime: 3,//累计修复工作时间
        yanyou: 512,//燃油
        tianjian: 153,//田间  累计工作量
        tianjian2: 2,//田间 油耗
        xishu: 78,//负荷系数
        time: 90,// 百分比
    },
    {
        workTime: 200,//累计工作时间
        nullTime: 12,// 累计空转时间
        baoyangWorkTime: 8,//累计保养时间
        leijiXfTime: 3,//累计修复工作时间
        yanyou: 512,//燃油
        tianjian: 153,//田间  累计工作量
        tianjian2: 2,//田间 油耗
        xishu: 78,//负荷系数
        time: 90,// 百分比
    }
]


// 侧标表头的对应关系
let labelList = [
    {
        key: "workTime",
        label: "累计工作时间/h"
    },
    {
        key: "nullTime",
        label: "累计空转时间/h"
    },
    {
        key: "baoyangWorkTime",
        label: "累计保养时间/h"
    },
    {
        key: "leijiXfTime",
        label: "累计修复工作时间/h"
    },
    {
        key: "yanyou",
        label: "累计耗油量/kg|燃油"
    },
    {
        key: "tianjian",
        label: "累计工作量|田间"
    },
    {
        key: "tianjian2",
        label: "平均小时燃油耗|田间"
    },
    {
        key: "xishu",
        label: "田间作业平均负荷系数"
    },
    {
        key: "time",
        label: "田间作业时间占总时间的百分比"
    }
]


// 表格需要的数据
let list = []

/**
 * 遍历循环  表头对应关系 
 * 根据后端返回数据的长度进行for in 遍历,得到每一列的数据
 * 设置每一列的字段 colItemData加上当前列的索引
 * 获取表头需要显示的内容,在 表头对应关系的 label中设置  如果有多个使用 | 进行分开
 * 设置每一行的数据, 需要判断 当前这一行是否有值,因为前面遍历了synthesisSummary 会先执行完synthesisSummary的第一项在执行第二项,如果有值就是他本身,如果没有值就是当前行的表头
 * 然后对当前行添加数据
 */

labelList.map((item, index) => {
    for (let i = 0; i < synthesisSummary.length; i++) {
        let keys = 'colItemData' + (i + 1)
        let labelList = item.label.split('|')
        let header = {
            col1: labelList[0],
            col2: labelList[1] || '',

        }

        list[index] = list[index] ? list[index] : header
        list[index][keys] = synthesisSummary[i][item['key']]
    }
})

console.log(list)
console 命令行工具 X clear

                    
>
console