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

如何在嵌套数组内层上下文同时访问外层与内层索引?

如何在内层模板上下文访问外层数组的索引

当然可以!在大多数支持上下文管理的模板引擎(比如Handlebars、Mustache等)中,你完全能在内层循环里获取外层数组的索引,核心思路是在外层遍历的时候显式捕获并保存外层索引变量,让内层上下文可以直接引用它。

具体实现方案

方案1:显式声明外层索引变量(推荐,兼容性更强)

以类似你给出的模板语法为例,我们可以在遍历外层数组时,同时声明外层的索引变量,这样内层循环就能直接使用这个变量:

{#each outer as |outerItem outerIdx|}
  {#each outerItem.inner as |innerItem innerIdx|}
    outer[{{outerIdx}}].inner[{{innerIdx}}]
  {/each}
{/each}

这里的outerIdx就是外层数组的索引,它会被保留在当前的上下文栈中,内层循环可以直接访问到它,最终就能生成你想要的outer[0].inner[0] outer[0].inner[1] outer[1].inner[0] outer[1].inner[1]格式输出。

方案2:通过父级上下文访问索引(依赖引擎特性)

有些模板引擎支持通过特殊语法访问父级上下文的变量,比如用../来指代上一级上下文。如果你的模板引擎支持这种写法,也可以这样写:

{#each outer}
  {#each inner}
    outer[{{../$idx}}].inner[{{$idx}}]
  {/each}
{/each}

这里的../$idx就代表父级(外层循环)的索引,$idx是当前内层循环的索引。不过要注意,这种语法在不同模板引擎里可能有差异(比如有的引擎用@parent.$idx),所以显式声明变量的方式更稳妥。

关键原理

模板引擎的上下文是分层的,当你进入内层循环时,父级的上下文并不会消失,只要你在外层把索引存储到一个命名变量里,或者引擎提供了父级上下文的访问方式,内层就能拿到外层的索引值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:45:17