Coldfusion命令在字母表上

时间:2014-10-08 11:39:53

标签: loops coldfusion iteration cfloop

我循环遍历这样的迭代:

<cfloop condition="depFeedIterator.hasNext()">
    <cfset item=depFeedIterator.next()/>
    <ul><li>#item.getValue('title')</li></ul>
</cfloop>

这将返回所有标题。但我必须按字母顺序组织这些标题(这已在bean本身中完成)。所以我添加了这个:

<cfif #left(#item.getValue('title')#,1)# == "a">
    <li><h2>A</h2></li>
       etc

但如果我有一个以A开头的两个标题,我就得到这个:

A
ABC

A
AAB

而不是:

A
ABC
AAC

我已经玩了一段时间而无法解决这个问题。我希望你们有一些建议

1 个答案:

答案 0 :(得分:6)

您也需要跟踪前一个字母,并且仅在当前字母与前一个字母不同时输出标题,例如:

<cfset prevFirstLetter = "">
<cfloop condition="depFeedIterator.hasNext()">
    <cfset item=depFeedIterator.next()/>
    <cfset itemTitle = item.getValue('title')>
    <cfset currentFirstLetter = left(itemTitle,1)>
    <cfif currentFirstLetter NEQ prevFirstLetter>
        <li><h2>#currentFirstLetter#</h2></li>
        <cfset prevFirstLetter = currentFirstLetter>
    </cfif>
    <!--- etc --->
</cfloop>

关于英镑符号的使用,您还可以阅读“When to use pound-signs”。