Arrays 比较两个数组,检查匹配值
使用HubL(在HubSpot中构建模块时),我有两个阵列:Arrays 比较两个数组,检查匹配值,arrays,jinja2,hubspot,hubl,Arrays,Jinja2,Hubspot,Hubl,使用HubL(在HubSpot中构建模块时),我有两个阵列: 主题:是主题列表 所有标签:系统中所有博客标签的数组 如果我转储这些数组,它将返回以下结果: {{topics}打印以下内容:[数据、会计、洞察] {{all_tags}}打印以下内容:[记帐、按、数据] 所以本质上,{{topics}有一个标签(“Insight”),这个标签在系统中还不存在 我要做的是创建第三个数组,它将包含上面两个数组的匹配结果。例如,主题\u final,一旦返回,应打印[数据,会计] 但是,当打印{{to
主题
:是主题列表所有标签
:系统中所有博客标签的数组
打印以下内容:{{topics}
[数据、会计、洞察]
打印以下内容:{{all_tags}}
[记帐、按、数据]
{{topics}
有一个标签(“Insight”),这个标签在系统中还不存在
我要做的是创建第三个数组,它将包含上面两个数组的匹配结果。例如,主题\u final
,一旦返回,应打印[数据,会计]
但是,当打印{{topics\u 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 %}
{%set all_tags=blog_主题(blog_id,250)%}
{%设置主题=[]%}
{%设置主题\u final=[]%}
{module.add_topics.topics%}中的项为%
{%set topic_option=item|striptags%}
{%do topics.append(topic_选项)%}
{%endfor%}
{%用于所有_标记%中的主题}
{%if所有_标记中的主题%}
{{主题}
{%else%}
其他的
{%endif%}
{%endfor%}
在上面,它只打印出{{topics}
,即使Insight
不在all_标签
数组中
注意:标记
Jinja2
,因为语法类似过滤器和内置测试的组合可以帮助您实现这一点
遗憾的是,拒绝
过滤器似乎不接受否定测试,但是,您可以拒绝所有标签中不存在的主题
的所有元素,然后从主题
列表中拒绝所述元素
最后是:
{{ topics | reject('in', topics | reject('in', all_tags) | list) | list }}
开关产量:
[
"Data",
"Accounting"
]
过滤器和内置测试的组合可以帮助您实现这一点
遗憾的是,拒绝
过滤器似乎不接受否定测试,但是,您可以拒绝所有标签中不存在的主题
的所有元素,然后从主题
列表中拒绝所述元素
最后是:
{{ topics | reject('in', topics | reject('in', all_tags) | list) | list }}
开关产量:
[
"Data",
"Accounting"
]
为什么不在控制器或细枝扩展中执行此操作?@DarkBee-你的意思是什么?意思是这不应该是twig
的责任。在控制器或twig
函数/过滤器中执行此操作更方便。为什么不在控制器或twig扩展中执行此操作?@DarkBee-这是什么意思?意思是这不应由twig
负责。在控制器或twig
函数/过滤器中执行此操作更方便