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

Vue v-for循环中如何动态拼接访问对象p+索引格式的属性?

实现方法

该需求完全可实现,无需额外依赖Vue的特殊语法,基于JavaScript原生对象访问规则即可完成。

  • 语法注意点:对象的点语法(.)仅支持访问静态固定的属性名,要动态拼接属性名访问,必须使用方括号([])访问语法,方括号内支持任意合法JS表达式,可以直接拼接你需要的p+序号格式属性名。
  • 下标适配注意:v-for="index in attrLength"遍历数值时,index默认从1开始计数,和你需要的p1/p2后缀序号规则匹配;如果你的projects是常规0下标的数组,取对应项目对象时需要将index减1来匹配数组下标。

写法1:保留原有循环结构

不需要额外声明const project = projects[index]变量,直接在插值表达式中完成取值即可:

<p v-for="index in attrLength" :key="index" class="text-3xl">
  {{ projects[index - 1][`p${index}`] }}
</p>

如果你的projects数组下标从1开始(非标准数组写法),直接把index - 1改成index即可。上述代码在index为1时实际访问projects[0].p1,index为2时访问projects[1].p2,和预期效果完全一致。

写法2:直接拿到project对象(更推荐)

如果你希望循环内直接拿到project对象、避免手动计算数组下标,可以直接遍历projects数组的前attrLength项,逻辑更直观不易出错:

<p v-for="(project, idx) in projects.slice(0, attrLength)" :key="idx" class="text-3xl">
  {{ project[`p${idx + 1}`] }}
</p>

这种写法里idx是数组下标(从0开始),拼接属性名时加1即可得到p1/p2格式的属性名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 10:45:59