使用HubL(因为我正在HubSpot中构建模块(,我有两个数组:
topics
:这是一个主题列表all_tags
:它是系统中所有博客标签的数组
如果我转储掉这些数组,它将返回以下内容:
{{ topics }}
打印以下内容:[Data, Accounting, Insight]
{{ all_tags }}
打印以下内容:[Accounting, Press, Data]
因此,从本质上讲,{{ topics }}
有一个在系统中还不存在的标签("Insight"(。
我要做的是创建第三个数组,它将包含上面两个数组的匹配结果。例如,一旦返回topics_final
,就应该打印[Data, Accounting]
。
但是,当打印{{ topics_final }}
时,数组为空。
我尝试过的:
<!-- this gets all tags -->
{% set all_tags = blog_topics( blog_id , 250) %}
<!-- create arrays -->
{% set topics = [] %}
{% set topics_final = [] %}
<!-- append topic data to the array -->
{% for item in module.add_topics.topics %}
{% set topic_option = item|striptags %}
{% do topics.append( topic_option ) %}
{% endfor %}
<!-- check if topic tags exists in HubSpot -->
{% for topics in all_tags %}
{% if topics in all_tags %}
{{ topics }}
<!-- results with above
Data, Accounting, Insight
-->
{% else %}
else
{% endif %}
{% endfor %}
通过以上操作,它只打印出{{ topics }}
,即使Insight
不在all_tags
阵列中。
注意:标记Jinja2
,因为语法类似
过滤器reject
和内置测试in
的组合可以帮助您实现这一点。
遗憾的是,reject
过滤器似乎不接受否定测试,但是,您可以拒绝topics
中不在all_tags
中的所有元素,然后从topics
列表中拒绝所述元素。
最后是:
{{ topics | reject('in', topics | reject('in', all_tags) | list) | list }}
交换机收益率:
[
"Data",
"Accounting"
]