gpt4 book ai didi

jekyll - 在Liquid/Jekyll模板中过滤数组

转载 作者:行者123 更新时间:2023-12-04 14:00:05 27 4
gpt4 key购买 nike

从函数式编程的角度来看,大多数Liquid“过滤器”实际上是“映射”:您获取一个数组,将一个函数应用于每个元素并返回转换后的数组。我想改为“过滤器”:我只想返回数组中符合特定条件的那些项。我怎样才能做到这一点?

具体来说,我正在尝试改进此模板:

Authors: 
{% for c in site.data["contributors"] %}
{% assign contributor = c[1] %}{% if contributor.role contains "author" %}{{contributor.name.given}} {{contributor.name.family}}{% endif %}{% endfor %}

美化后,它看起来像这样:
Authors: 
{% for c in site.data["contributors"] %}
{% assign contributor = c[1] %}
{% if contributor.role contains "author" %}
{{contributor.name.given}} {{contributor.name.family}}
{% endif %}
{% endfor %}

其数据如下所示:
ianbarber:
name:
given: Ian
family: Barber
org:
name: Google
unit: Developer Relations
country: UK
role:
- engineer
homepage: http://riskcompletefailure.com
google: +ianbarber
twitter: ianbarber
email: ianbarber@google.com
description: "Ian is a DRE"

samdutton:
name:
given: Sam
family: Dutton
org:
name: Google
unit: Developer Relations
country: UK
role:
- author
google: +SamDutton
email: dutton@google.com
description: "Sam is a Developer Advocate"

(示例取自 here)。

这种方法的问题是,如果当前元素与条件不匹配,则会输出换行符,如 https://developers.google.com/web/humans.txt所示。

我怎样才能解决这个问题?

最佳答案

如果要在条件不匹配的情况下摆脱换行符,请尝试删除iffor子句中不需要的换行符:

{% for c in site.data["contributors"] %}{% assign contributor = c[1] %}{% if contributor.role contains "author" %}
{{contributor.name.given}} {{contributor.name.family}}{% endif %}{% endfor %}

这在源代码中可能看起来不太好,但是可能会消除输出中的换行符。

注意:我没有尝试过,但是类似的重新排列帮助我摆脱了不需要的换行符。您甚至可能必须将 {% if ...放在最左端,因此缩进不包括在内。

关于jekyll - 在Liquid/Jekyll模板中过滤数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25522416/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com