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

如何用Vue.js渲染多维数组列表,解决下标访问报错问题

问题解决方案

报错原因

  • 渲染阶段post.rut尚未完成赋值处于undefined状态,此时直接访问索引[0]就会触发"读取undefined属性"的类型错误,绝大多数是因为posts为异步接口返回数据,渲染时第一轮还没拿到后端返回的完整结构
  • 现有代码存在语法冗余:<td>{{ post.rut[0] }}</td></td>多写了一个多余的</td>闭合标签,需先删除

修复方案

方案1:单个数组元素展示(取每个字段数组的第一个值)

如果是Vue3支持ES2020+语法,直接用可选链+空值合并兜底:

<tbody>
     <tr v-for="(post, index) in posts" :key="index">
       <td>{{ post.rut?.[0] ?? '' }}</td>
       <td>{{ post.full_name?.[0] ?? '' }}</td>
       <td>{{ post.total_days?.[0] ?? '' }}</td>
     </tr>
</tbody>

如果是Vue2不支持可选链,改用逻辑与兜底:

<tbody>
     <tr v-for="(post, index) in posts" :key="index">
       <td>{{ post.rut && post.rut[0] || '' }}</td>
       <td>{{ post.full_name && post.full_name[0] || '' }}</td>
       <td>{{ post.total_days && post.total_days[0] || '' }}</td>
     </tr>
</tbody>

方案2:全数组元素展示(字段数组存在多个值的场景)

嵌套一层v-for遍历对应字段的数组内容即可:

<tbody>
     <tr v-for="(post, postIndex) in posts" :key="postIndex">
       <td>
         <span v-for="(rutItem, rutIndex) in post.rut || []" :key="rutIndex">
           {{ rutItem }}
         </span>
       </td>
       <td>
         <span v-for="(nameItem, nameIndex) in post.full_name || []" :key="nameIndex">
           {{ nameItem }}
         </span>
       </td>
       <td>
         <span v-for="(dayItem, dayIndex) in post.total_days || []" :key="dayIndex">
           {{ dayItem }}
         </span>
       </td>
     </tr>
</tbody>

额外优化建议

给posts设置符合结构的初始值,比如初始赋值为[{rut: [], full_name: [], total_days: []}],可从根源避免初始渲染时属性不存在的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 09:36:00