自由标记序列指数计算

时间:2017-01-14 23:03:57

标签: sequence freemarker

在过去的一天左右,我一直在讨论这个问题,我不知道问题是什么。如果能有一些新鲜的眼睛让我知道我做错了什么会很好。

我试图在freemarker中遍历排序的字符串序列,并拉出重复项以存储在新序列中。重复是我想要的,而不是唯一的。

<#assign dupMessageids = [] />
<#list arrMsdIds as itemId>
        <#assign currIndex = itemId?index />
        <#if arrMsdIds[(currIndex?number)+1]==itemId>
            <#assign dupMessageids = dupMessageids + [itemId] />
        </#if>
</#list>

也试过这个表达式没有成功:

arrMsdIds[currIndex+1]==itemId

所以我要检查当前索引项是否等于序列中它旁边的项。但是我收到了这个错误:

以下评估为null或缺失: ==&GT; arrMsdIds [(currIndex?数)+1]

非常感谢任何帮助

1 个答案:

答案 0 :(得分:2)

当你得到错误时,当你到达最后一个项目的索引时,currIndex + 1将指向最后一个项目,因此,该项目缺失。无论如何,这是固定版本,有一些美化。

<#assign dupMessageIds = []>
<#list arrMsdIds as itemId>
  <#if itemId?has_next && arrMsdIds[itemId?index + 1] == itemId>
    <#assign dupMessageIds += [itemId] />
  </#if>
</#list>

但请注意,模板并非旨在处理此类内容。它们意味着显示已经用真实语言“计算”的数据。特别是,如果您有数百个重复项,请不要执行上述操作,因为生成的序列读取速度非常慢(是的,要阅读)。