How to output 2nd indexed item in a list?

SOLVE
Occasional Contributor

 

I want to output the 2nd item in a list.  For example, I'd like to output "oranges" from my list below, but this is not printing anything at all:

 

{% set items= ['apples, 'oranges', 'bananas', 'pears'] %}

{% for item in items %}
  {% if loop.index == 2 %}
     {% set output = item %}
{{ output|pprint }} {% endif %} {% endfor %}

Any ideas what the best way is to do this?

 

Reply
0 Upvotes
1 Accepted solution

Accepted Solutions
Highlighted
Regular Contributor | Platinum Partner

Hey @Greg_Batenburg

 

You have a missing quote to close the first word apples.
Fixed code:

{% set items= ['apples', 'oranges', 'bananas', 'pears'] %}

{% for item in items %}
  {% if loop.index == 2 %}
     {% set output = item %}
     {{ output|pprint }}
  {% endif %}
{% endfor %}

Also, to print just the value you don't need the |pprint filter. Its used to print a whole array and the type of the function and things like that while debuggin. In this case the |pprint filter will print:
(String: oranges)

instead only:
orange

 

Regards,

Gonzalo

Reply
0 Upvotes
3 Replies 3
Highlighted
Regular Contributor | Platinum Partner

Hey @Greg_Batenburg

 

You have a missing quote to close the first word apples.
Fixed code:

{% set items= ['apples', 'oranges', 'bananas', 'pears'] %}

{% for item in items %}
  {% if loop.index == 2 %}
     {% set output = item %}
     {{ output|pprint }}
  {% endif %}
{% endfor %}

Also, to print just the value you don't need the |pprint filter. Its used to print a whole array and the type of the function and things like that while debuggin. In this case the |pprint filter will print:
(String: oranges)

instead only:
orange

 

Regards,

Gonzalo

Reply
0 Upvotes
Occasional Contributor

Thanks!  I also learned my lesson that I am not allowed to pass variables out of the for loop in HUBL.

 

 

Reply
0 Upvotes
Regular Contributor | Platinum Partner

Right!

If you need to "extract" a value from a for the only way to manage is working on the last iteration, so you can do something like:

{% for item in items %}
{% if loop.last %} {# Do your stuff here #} {% endif %} {% endfor %}

 

Reply
0 Upvotes