J'ai un tableau d'objets, où j'ai les champs suivants: titre, nom e url Mes données: @array = [{id: 1, titre: '123', nom: 123}, {id: 2, titre: ' 123 ', nom: 321}, {id: 3, titre:' 1234 '...

-1
Ruan Duarte 17 mars 2021 à 03:34

1 réponse

Meilleure réponse

Vous obtenez des entrées en double puisque vous map ping sur tous les éléments et filtrez le tableau pour chaque élément à l'intérieur du bloc.

Vous pouvez utiliser Enumerable#group_by pour regrouper les éléments du tableau par title. Vous pouvez ensuite parcourir les groupes et afficher le titre et les noms de chaque groupe. Notez que j'utilise item[:name] pour accéder aux valeurs du hachage puisque votre question mentionne un tableau de hachages. Vous devriez le mettre à jour vers item.name (et d'autres endroits utilisant l'accès par hachage) si vous travaillez avec des objets à la place.

@groups = @array.group_by {|i| i[:title] }
<% @groups.each do |title, items| %>
  <h3><%= title %></h3>
  <% items.each do |item| %>
    <p><%= item[:name] %></p>
  <% end %>
<% end %>
3
Arun Kumar Mohan 17 mars 2021 à 01:02