freemarker序列索引计算
freemarker sequence index calculation
过去一天左右我一直在思考这个问题,我不确定问题出在哪里。最好重新审视一下,让我知道我做错了什么。
我正在尝试循环遍历 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
所以我正在检查当前索引项目是否等于序列中它旁边的项目。但是我收到这个错误:
以下评估为空或缺失:
==> arrMsdIds[(currIndex?number)+1]
如有任何帮助,我们将不胜感激
根据您收到的错误,当您到达最后一个项目的索引时,currIndex + 1
将指向最后一个项目之后,因此,该项目丢失了。无论如何,这是经过一些美化的固定版本。
<#assign dupMessageIds = []>
<#list arrMsdIds as itemId>
<#if itemId?has_next && arrMsdIds[itemId?index + 1] == itemId>
<#assign dupMessageIds += [itemId] />
</#if>
</#list>
但请注意,模板不是为处理此类问题而设计的。他们打算用真实语言显示已经 "calculated" 的数据。特别是,如果您有数百个重复项,请不要执行上述操作,因为生成的序列阅读起来会很慢(是的,阅读起来)。
过去一天左右我一直在思考这个问题,我不确定问题出在哪里。最好重新审视一下,让我知道我做错了什么。
我正在尝试循环遍历 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
所以我正在检查当前索引项目是否等于序列中它旁边的项目。但是我收到这个错误:
以下评估为空或缺失: ==> arrMsdIds[(currIndex?number)+1]
如有任何帮助,我们将不胜感激
根据您收到的错误,当您到达最后一个项目的索引时,currIndex + 1
将指向最后一个项目之后,因此,该项目丢失了。无论如何,这是经过一些美化的固定版本。
<#assign dupMessageIds = []>
<#list arrMsdIds as itemId>
<#if itemId?has_next && arrMsdIds[itemId?index + 1] == itemId>
<#assign dupMessageIds += [itemId] />
</#if>
</#list>
但请注意,模板不是为处理此类问题而设计的。他们打算用真实语言显示已经 "calculated" 的数据。特别是,如果您有数百个重复项,请不要执行上述操作,因为生成的序列阅读起来会很慢(是的,阅读起来)。