在过去的一天左右,我一直在讨论这个问题,我不知道问题是什么。如果能有一些新鲜的眼睛让我知道我做错了什么会很好。
我试图在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]
非常感谢任何帮助
答案 0 :(得分:2)
当你得到错误时,当你到达最后一个项目的索引时,currIndex + 1
将指向最后一个项目,因此,该项目缺失。无论如何,这是固定版本,有一些美化。
<#assign dupMessageIds = []>
<#list arrMsdIds as itemId>
<#if itemId?has_next && arrMsdIds[itemId?index + 1] == itemId>
<#assign dupMessageIds += [itemId] />
</#if>
</#list>
但请注意,模板并非旨在处理此类内容。它们意味着显示已经用真实语言“计算”的数据。特别是,如果您有数百个重复项,请不要执行上述操作,因为生成的序列读取速度非常慢(是的,要阅读)。