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

Jekyll Liquid:如何检测数组是否包含指定键值的对象?

解决方法

Twig的contains语法是严格匹配对象引用的,你直接创建一个新的{'key': key, 'id': id}对象去匹配,和数组里的原对象内存地址不同,所以永远返回false。要按属性值检测数组中是否存在符合条件的对象,可以用以下两种方法:

方法一:使用filter过滤器

通过filter筛选出符合属性条件的元素,再判断筛选结果的长度是否大于0:

{% if arr|filter(item => item is object and item.key == key and item.id == id)|length > 0 %}
    数组包含目标对象
{% endif %}
  • 加上item is object是为了避免数组中非对象元素(比如你的数组里的0、1、2、3)触发属性访问报错,如果你确定数组里只有对象,可以省略这个判断。

方法二:使用some函数(Twig 2.10+ 支持)

some函数会直接检查数组中是否存在至少一个满足条件的元素,写法更简洁:

{% if arr|some(item => item is object and item.key == key and item.id == id) %}
    数组包含目标对象
{% endif %}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 01:02:02