1
votes

In my Jekyll site, I have a page that stores an array of data in front matter, like this:

---
layout: page
title: MyTitle
array:
  - key1: value1
  - key2: value2
---

What I want to do in my template: given a keyX, obtain valueX from the array.

I figured out a way to access the array:

{% assign subpage = site.pages | where: 'title', 'MyTitle' %}
{% assign array = subpage[0].array %}

Now the query that I need to write is: "from the array, extract the value that matches keyX".

Is there a way to search through the array, without the need for looping? All the examples I can find are based on one-dimensional arrays...

2

2 Answers

1
votes

Your array is an array of non standardized objects (they don't have the same keys).

{{ page.array | inspect }} 

returns

[{"key1"=>"value1"}, {"key2"=>"value2"}]

Here the only way to search is to loop over all array's items.

If you refactor your array to become an object, you can then get value from a key.

---
[...]
object:
  key1: value1
  key2: value2
...

Example :

{% assign searched = "key1" %}
{{ page.object[searched] }}
0
votes

I found this workaround in the meantime:

{% for valueList in array %}
  {% for valuePair in valueList %}
    {% if valuePair[0] ==  "key1" %}
      {% assign value = valuePair[1] %}
    {% endif %}
  {% endfor %}
{% endfor %}