echarts中的series数据如何循环展示

495 阅读1分钟

将这样的数组数组压入echarts的series中该怎做?

list=[
    {
      "floorName": "3号学生宿舍楼",
      "grades": [
        {
          "gradeName": "八年级",
          "val": 0
        },
        {
          "gradeName": "七年级",
          "val": 0
        },
        {
          "gradeName": "九年级",
          "val": 0
        }
      ]
    },
    {
      "floorName": "2号学生宿舍楼",
      "grades": [
        {
          "gradeName": "八年级",
          "val": 0
        },
        {
          "gradeName": "七年级",
          "val": 0
        },
        {
          "gradeName": "九年级",
          "val": 0
        }
      ]
    },
    {
      "floorName": "1号学生宿舍楼",
      "grades": [
        {
          "gradeName": "八年级",
          "val": 0
        },
        {
          "gradeName": "七年级",
          "val": 0
        },
        {
          "gradeName": "九年级",
          "val": 0
        }
      ]
    }
  ],

循环压入一个数组中,再给series赋值给这个数组变量名称:

var series=[];
for(let i = 0; i < list[0].grades.length; i++){
    series.push({
        type:"bar",
        data: (function () {
            let arr = [];
            list.forEach((ele) => {
              if (ele.grades.length > 0) {
                arr.push(ele.grades[i].val);
              }
            });
            return arr;
          })(),
          name: (function () {
            let str = "";
            list.forEach((ele) => {
              if (ele.grades.length > 0) {
                str = ele.grades[i].gradeName;
              }
            });
            return str;
          })(),
    })
}

//配置
series:series

image.png

在写的过程中,可能会遇到这样的问题,Cannot read properties of undefined (reading 'FlorGradeDrom')

image.png

这是因为this指向的是实例,相当于父级,指向不到子级中。所以需要一个变量_this存储this的指向

image.png

又或者使用箭头函数,因为箭头函数中的this是指向当前作用域,所以不用再let _this = this

image.png