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

如何在Vue中用v-for遍历多层数组并按日期匹配渲染员工表格

Vue v-for表格填充实现方案

前置数据结构参考

基于你描述的reduce处理后的嵌套结构,给出参考结构方便对齐逻辑:

// 员工列表数据,已按「员工-日期-作业」分层
const employeeList = [
  {
    empId: 1,
    empName: '张三',
    dateJobs: { // 键为日期字符串,值为当日作业列表
      '2024-05-01': [
        { area: 'A区', jobNo: 'X001', workHours: 8 },
        { area: 'A区', jobNo: 'X002', workHours: 2 }
      ],
      '2024-05-03': [
        { area: 'B区', jobNo: 'Y001', workHours: 7 }
      ]
    }
  },
  // 更多员工...
]
// 已排序的日期表头数组
const dateHeaders = ['2024-05-01', '2024-05-02', '2024-05-03']

模板v-for循环代码

<template>
  <table border="1" style="border-collapse: collapse; width: 100%;">
    <thead>
      <tr>
        <th>员工姓名</th>
        <!-- 遍历排序后的日期生成表头 -->
        <th v-for="date in dateHeaders" :key="date">{{ date }}</th>
      </tr>
    </thead>
    <tbody>
      <!-- 第一层遍历:遍历所有员工生成行 -->
      <tr v-for="emp in employeeList" :key="emp.empId">
        <td>{{ emp.empName }}</td>
        <!-- 第二层遍历:始终和表头的日期数组对齐,保证单元格和表头一一对应 -->
        <td v-for="date in dateHeaders" :key="`${emp.empId}-${date}`">
          <!-- 匹配到当日作业数据时,遍历作业列表展示字段 -->
          <div v-if="emp.dateJobs?.[date]?.length">
            <div 
              v-for="(job, index) in emp.dateJobs[date]" 
              :key="`${emp.empId}-${date}-${index}`"
              style="margin-bottom: 6px; padding: 2px;"
            >
              区域:{{ job.area }} / 作业编号:{{ job.jobNo }} / 工时:{{ job.workHours }}h
            </div>
          </div>
          <!-- 无匹配数据时展示占位 -->
          <span v-else style="color: #ccc;">-</span>
        </td>
      </tr>
    </tbody>
  </table>
</template>

核心实现要点

  • 单元格循环完全和dateHeaders表头数组绑定,不需要遍历员工自身的日期key,避免出现日期顺序错乱、缺漏的问题
  • 直接用当前遍历的表头日期作为key,去员工的作业数据中匹配对应日期的作业列表,自动完成数据和单元格的对齐
  • 作业层级的循环仅在当前日期有作业数据时执行,无数据时显示空占位即可
  • 所有v-for绑定唯一key,避免Vue渲染异常
  • 若你的预处理数据结构和参考不同,仅需调整emp.dateJobs[date]的取值路径为你实际的作业列表路径即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 07:09:04