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

Jekyll中如何访问按ID筛选后的多维数组单个元素?

问题:如何访问Jekyll中通过where筛选得到的单条数组元素?

我在Jekyll数据文件中有一组从CSL导出为YAML的参考条目,示例格式如下:

references:
- id: palazzo:2021vernacular
  accessed:
    - year: 2021
      month: 11
      day: 10
  author:
    - family: Palazzo
      given: Pedro P.
  citation-key: palazzo:2021vernacular
  container-title: Journal of Traditional Building, Architecture and Urbanism
  DOI: 10.51303/jtbau.vi2.524
  ISSN: 2660-583X
  issue: '2'
  issued:
    - year: 2021
      month: 11
      day: 10
  language: en
  page: 359-370
  source: traditionalarchitecturejournal.com
  title: 'Vernacular patterns in Portugal and Brazil: evolution and adaptations'
  type: article-journal
  URL: https://traditionalarchitecturejournal.com/index.php/home/article/view/524

我用以下代码筛选单条记录,但得到的是一个数组(即使只有一条匹配结果):

{% assign citekey = page.citekey %}
{% assign work = site.data.bibliography.references | where: "id", citekey %}

请问如何直接访问这个数组中的单个元素?


解决方案

Jekyll的where过滤器会返回所有匹配条件的元素组成的数组,哪怕只有一条结果。要获取单个元素,有两种简单方法:

方法1:用first过滤器提取数组第一个元素

直接在筛选后追加first过滤器,就能拿到数组里的第一条(也是唯一一条)元素:

{% assign citekey = page.citekey %}
{% assign work = site.data.bibliography.references | where: "id", citekey | first %}

之后你就可以直接通过work.title、work.author等字段访问元素内容了。

方法2:用find过滤器直接获取单个匹配元素

如果你确定只会有一条匹配结果,更推荐用find过滤器——它会直接返回第一个符合条件的单个元素,无需再处理数组:

{% assign citekey = page.citekey %}
{% assign work = site.data.bibliography.references | find: "id", citekey %}

补充说明

  • 如果需要验证是否拿到了正确的元素,可以用{{ work | inspect }}输出元素的完整结构来调试。
  • 若存在多条匹配记录,first和find都会返回第一条;如果需要处理多条结果,才需要保留数组形式遍历。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 16:22:41