You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在FreeMarker中基于已有序列创建新的过滤序列

FreeMarker序列多条件过滤实现方法

FreeMarker的filter内置函数完全支持在lambda表达式中使用多条件逻辑判断,直接用||(逻辑或)、&&(逻辑与)即可实现你的需求,写法和你预想的几乎一致,仅需注意语法细节:

基础多条件过滤示例

首先定义原序列:

<#assign seq = ['a', 'b', 'c', 'd', 'e']>
  1. 过滤得到['a', 'b']:
<#assign seq1 = seq?filter(x -> x == 'a' || x == 'b')>
  1. 过滤得到['b', 'd', 'e']:
<#assign seq2 = seq?filter(x -> x == 'b' || x == 'd' || x == 'e')>

简化多元素过滤的技巧

如果需要过滤的元素数量较多,重复写||会显得冗余,你可以先定义一个目标元素序列,再用contains方法简化判断:

<#assign targetSeq1 = ['a', 'b']>
<#assign seq1 = seq?filter(x -> targetSeq1?contains(x))>

<#assign targetSeq2 = ['b', 'd', 'e']>
<#assign seq2 = seq?filter(x -> targetSeq2?contains(x))>

复杂组合条件示例

如果需要更复杂的逻辑(比如逻辑与+逻辑或的组合),可以用括号对条件分组,比如过滤出不是c且是a或b的元素:

<#assign filteredSeq = seq?filter(x -> (x == 'a' || x == 'b') && x != 'c')>

内容的提问来源于stack exchange,提问作者Luca Detomi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 20:00:05