0

我正在循环这样的迭代:

<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 开头的标题,我会得到:

美国
广播公司

一个
Aab

代替 :

ABC
Aac _

我一直在玩这个,但无法弄清楚。希望大家给点建议

4

1 回答 1

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>

您还可以从阅读有关井号用法的“何时使用井号”中受益。

于 2014-10-08T11:55:37.873 回答