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

Liquid中通过For Loop调用带序号变量无输出?求解决方案

解决Liquid循环调用编号独立变量无输出的问题

你当前的代码无法输出预期内容,核心原因是Liquid不支持test_[my_index]这种直接拼接变量名的写法——它会把test_当作一个未定义的独立变量,无法识别出你要引用的是test_1、test_2这类完整变量名。

通用解决方案:构建哈希映射访问

先将所有独立变量存入一个哈希对象,再通过循环生成键名来访问对应值:

{% assign test_1 = 'A' %}
{% assign test_2 = 'B' %}
{% assign test_3 = 'C' %}
{% assign test_4 = 'D' %}
{% assign test_5 = 'E' %}

{% assign test_map = {} %}
{% assign test_map = test_map | merge: {"test_1": test_1} %}
{% assign test_map = test_map | merge: {"test_2": test_2} %}
{% assign test_map = test_map | merge: {"test_3": test_3} %}
{% assign test_map = test_map | merge: {"test_4": test_4} %}
{% assign test_map = test_map | merge: {"test_5": test_5} %}

{% for i in (1..5) %}
  {% capture var_key %}test_{{i}}{% endcapture %}
  {{ test_map[var_key] }} 
{% endfor %}

简化写法(直接定义哈希)

如果不需要保留单独的test_1这类变量,可以直接定义包含所有键值对的哈希,代码更简洁:

{% assign test_map = {
  "test_1": 'A',
  "test_2": 'B',
  "test_3": 'C',
  "test_4": 'D',
  "test_5": 'E'
} %}

{% for i in (1..5) %}
  {% capture var_key %}test_{{i}}{% endcapture %}
  {{ test_map[var_key] }} 
{% endfor %}

环境兼容方案(用lookup过滤器)

在Jekyll等支持lookup过滤器的环境中,可直接动态生成变量名并从上下文查找:

{% assign test_1 = 'A' %}
{% assign test_2 = 'B' %}
{% assign test_3 = 'C' %}
{% assign test_4 = 'D' %}
{% assign test_5 = 'E' %}

{% for i in (1..5) %}
  {% capture var_name %}test_{{i}}{% endcapture %}
  {{ page | lookup: var_name }} 
{% endfor %}

以上代码均可输出预期的A B C D E。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 00:25:28