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

Arrays 比较两个数组,检查匹配值,arrays,jinja2,hubspot,hubl,Arrays,Jinja2,Hubspot,Hubl,使用HubL(在HubSpot中构建模块时),我有两个阵列: 主题:是主题列表 所有标签:系统中所有博客标签的数组 如果我转储这些数组,它将返回以下结果: {{topics}打印以下内容:[数据、会计、洞察] {{all_tags}}打印以下内容:[记帐、按、数据] 所以本质上,{{topics}有一个标签(“Insight”),这个标签在系统中还不存在 我要做的是创建第三个数组,它将包含上面两个数组的匹配结果。例如,主题\u final,一旦返回,应打印[数据,会计] 但是,当打印{{to

使用HubL(在HubSpot中构建模块时),我有两个阵列:

  • 主题
    :是主题列表
  • 所有标签
    :系统中所有博客标签的数组
  • 如果我转储这些数组,它将返回以下结果:

    • {{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
    函数/过滤器中执行此操作更方便