动态生成表格表头及组合表格数据

后端返回数据结构:

let data = [
    {
        time:'2022-12-23 07:00:00',
        dataValue: 0,
        stationId: "21091301000",
        stationName: "珠江路吴都路交叉路口"
    },
    {
        time:'2022-12-23 07:10:00',
        dataValue: 0,
        stationId: "21091301000",
        stationName: "珠江路吴都路交叉路口"
    },
    {
        time:'2022-12-23 07:20:00',
        dataValue: 0,
        stationId: "21091301000",
        stationName: "珠江路吴都路交叉路口"
    },
        {
        time:'2022-12-23 07:00:00',
        dataValue: 0,
        stationId: "21091303000",
        stationName: "兴昌路旺庄路交叉路口"
    },
    {
        time:'2022-12-23 07:10:00',
        dataValue: 0,
        stationId: "21091303000",
        stationName: "兴昌路旺庄路交叉路口"
    },
    {
        time:'2022-12-23 07:20:00',
        dataValue: 0,
        stationId: "21091303000",
        stationName: "兴昌路旺庄路交叉路口"
    },
]

需要展示效果:

代码实现:

     const dataSource = ref([]); // 表格数据源
     const columns = ref([
        {
          title: '站点',
          dataIndex: 'stationName',
          key: 'stationName',
        }
      ]);  // 表格列

      let timeList = [];
      let idArray = [];
      let newAarray = [];
      data.forEach(function (item, i) {
        if (idArray.indexOf(data[i].stationId) === -1) {
          newAarray.push({
            stationId: data[i].stationId,
            stationName: data[i].stationName,
            times: [data[i].time],
            values: [data[i].dataValue],
          });

          idArray.push(data[i].stationId);
        } else {
          newAarray.forEach(function (ele, k) {
            if (newAarray[k].stationId == data[i].stationId) {
              newAarray[k].times.push(data[i].time); //把具有相同id的times值进行合并
              newAarray[k].values.push(data[i].dataValue); //把具有相同id的values值进行合并
            }
          });
        }
      });

      newAarray.forEach((item) => {
        item.times.forEach((items, i) => {
          for (const key in item) {
            item[items] = item.values[i];
          }
        });
      });
      console.log(newAarray);
      timeList = newAarray[0].times;

      console.log(timeList);
      timeList.forEach((item) => {
        columns.value.push({
          title: item,
          dataIndex: item,
          key: item,
        });
      });

      dataSource.value = newAarray;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值