Collections 使用jekyll/liquid如何获取yml哈希的所有密钥

Collections 使用jekyll/liquid如何获取yml哈希的所有密钥,collections,yaml,jekyll,liquid,Collections,Yaml,Jekyll,Liquid,我有这个yaml param1: key1: value1 key2: value2 param2: key1: value1 key2: value2 param3: key1: value1 key2: value2 我怎样才能用液体拿到所有的钥匙 预期结果将是 param1,param2,param3 有什么想法吗 非常难看的解决方案:{%for%}在集合上,并对键进行concat 可接受的替代解决方案:创建液体过滤器“键”。。。听起来太大了以至于它实际上

我有这个yaml

param1:
  key1: value1
  key2: value2

param2:
  key1: value1
  key2: value2

param3:
  key1: value1
  key2: value2
我怎样才能用液体拿到所有的钥匙

预期结果将是

param1,param2,param3
有什么想法吗

  • 非常难看的解决方案:{%for%}在集合上,并对键进行concat
  • 可接受的替代解决方案:创建液体过滤器“键”。。。听起来太大了以至于它实际上不存在

我建议您的yml文件采用其他格式

- id: param1
  key1: value1
  key2: value2

- id: param2
  key1: value1
  key2: value2

- id: param3
  key1: value1
  key2: value2

然后您可以使用
{{site.data.file | map:“id”| join:“,”}

好的,我实现了一个小过滤器来获取散列键:

只需写下如下内容:

{{ hash | keys }} 
我使用了你在集合元素中循环的“丑陋解决方案”:

{%  for hash in site.data.file -%}
    {{hash[0]}},
{%- endfor %}
如果要删除尾随的“,”:

{%  for hash in site.data.file limit: 1 -%}
    {{hash[0]}}
{%- endfor %}
{%- for hash in site.data.file offset: 1 -%}
    ,{{hash[0]}}
{%- endfor %}

这解决了我的问题,但你也改变了根本问题^^回购协议不存在。建议更新或删除答案。