twig-lambda icon indicating copy to clipboard operation
twig-lambda copied to clipboard

Grouping returns two values instead one

Open codewithelvin opened this issue 6 years ago • 1 comments

I am trying to group in for loop using your extension. When I am trying to group by skillcategory it shows two times instead once.

Here is the data i get:

[
  {
    "0": {
      "skillid": 1,
      "skillname": "PHP",
      "skillcategory": "Programing Langugages",
      "skilllevel": 62
    },
    "4": {
      "skillid": 5,
      "skillname": "C#",
      "skillcategory": "Programing Langugages",
      "skilllevel": 50
    }
  },
  {
    "1": {
      "skillid": 2,
      "skillname": "Walking",
      "skillcategory": Others,
      "skilllevel": 20
    },
    "2": {
      "skillid": 3,
      "skillname": "Jumping",
      "skillcategory": Others,
      "skilllevel": 100
    },
    "3": {
      "skillid": 4,
      "skillname": "Naping",
      "skillcategory": Others,
      "skilllevel": 80
    }
  }
]

What I actually want to get

Programing Langugages
PHP, C#

Others
Walking, Jumping, Naping

And it is my version of twig code:

{% for key, i in skills|group_by(=> _.skillcategory) %}
   {% for b in i %}
       <div>{{b.skillcategory}}</div>
       {{b.skillname}}
   {% endfor %}
{% endfor %}

codewithelvin avatar Mar 22 '19 13:03 codewithelvin

Hi @neo-azazello You should put category name outside of the second for. Like this:

{% for key, i in skills|group_by(=> _.skillcategory) %}
   <div>{{key}}</div>
   {% for b in i %}
       {{b.skillname}}, 
   {% endfor %}
{% endfor %}

dpolac avatar Mar 22 '19 18:03 dpolac