You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue.js中如何遍历JSON数组子数组并生成Element UI表格?

解决Element UI Table嵌套数组遍历生成表格的问题

我来帮你搞定这个Element UI表格的问题哈!你的核心问题在于原始数据是嵌套数组结构,但Element UI的Table组件是基于一维数组来渲染每一行的,直接绑定原数组的话,它没法自动拆解内层的subDdiv数组,所以才会得不到预期的结果。

咱们可以通过扁平化数据的方式来解决,具体步骤如下:

1. 把嵌套数据转成一维数组

你可以在组件里用computed属性来处理数据,把每个班级下的每个div项和对应的class组合成单独的对象,生成一个新的一维数组:

computed: {
  flattenedTableData() {
    const result = [];
    // 遍历外层的班级数组
    this.array.forEach(classItem => {
      // 遍历每个班级下的div子数组
      classItem.subDdiv.forEach(divItem => {
        result.push({
          class: classItem.class,
          div: divItem.div,
          // 如果需要保留科目数组也可以带上,后面按需展示
          subjects: divItem.subjects
        });
      });
    });
    return result;
  }
}

2. 修改Table组件的数据源

把原来绑定的array换成我们处理好的flattenedTableData,这样Table就能正确识别每一行的class和div数据了:

<el-table :data="flattenedTableData" style="width: 100%">
  <el-table-column 
    v-for="label in labels" 
    :key="label" 
    :prop="label" 
    :label="label">
  </el-table-column>
  <!-- 可选:如果需要展示科目,可以加这一列,用自定义模板美化展示 -->
  <el-table-column label="Subjects">
    <template slot-scope="scope">
      <el-tag 
        v-for="subject in scope.row.subjects" 
        :key="subject" 
        size="small" 
        style="margin-right: 6px;">
        {{ subject }}
      </el-tag>
    </template>
  </el-table-column>
</el-table>

这样处理后,表格就会生成和预期一致的样式:每一行对应一个Class+Div的组合,完美展示你想要的结构~

内容的提问来源于stack exchange,提问作者Manu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 16:37:50