比较两个数组,检查匹配值



使用HubL(因为我正在HubSpot中构建模块(,我有两个数组:

  1. topics:这是一个主题列表
  2. 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"
]

相关内容

  • 没有找到相关文章

最新更新