Jeet
Jeet

Reputation: 1

Liquid. Looping through an array with an if condition then want to store the output of that in another array

{% assign leg = {{Predept.legs}} %}
{% for legs in {{leg}} %}
  {% if {{leg[forloop.index0].direction}} == 'R' %}
            {{leg[forloop.index0].arr_station_name}} 
  {%endif %}
{%endfor %}

I want to put the output of this for loop into another array. Any ideas?

Upvotes: 0

Views: 1282

Answers (1)

Dave B
Dave B

Reputation: 3248

Welcome, Jeet!

First, you don't ever nest the Liquid tags. Your basic loop should look something like this:

{% assign legs = Predept.legs %}
{% for leg in legs %}
  <!-- Cool code & stuff here! -->
{% endfor %}

Now, in Liquid you can only create a new array by using the split filter on a string. We can also create a string by wrapping other commands with the capture tag. Putting that together, we get something like:

{% capture leg_data %}
  {% assign legs = Predept.legs %}
  {% for leg in legs %}
    {% if leg.direction == 'R' %}
      {% comment %}Output delimiter if needed {% endcomment %}
      {% unless found_one %},{% endunless %}
      {% assign found_one = true %}
      {{ leg.arr_station_name }}
    {% endif %}
  {% endfor %}
{% endcapture %}

{% assign leg_data = leg_data | split: ',' %}

That will give us an array of all of our arr_station_name for the desired legs, but you may note that capture is also capturing all of the whitespace in there as well. If we need to prevent that from getting into our nice little array, we can use the whitespace-stripping - character on our tags to control that, giving:

{%- capture leg_data -%}
  {%- assign legs = Predept.legs -%}
  {%- for leg in legs -%}
    {%- if leg.direction == 'R' -%}
      {%- comment -%}Output delimiter if needed {%- endcomment -%}
      {%- unless found_one -%},{%- endunless -%}
      {%- assign found_one = true -%}
      {{- leg.arr_station_name -}}
    {%- endif -%}
  {%- endfor -%}
{%- endcapture -%}

{%- assign leg_data = leg_data | split: ',' -%}

Hope this helps!

Upvotes: 2

Related Questions