6
votes

Dans les rails, quelle est la meilleure façon de compacter un hachage dans un hachage imbriqué

dire que j'ai ceci: xxx

et je veux me retrouver avec: xxx

Quelle est la meilleure façon de le faire ?


0 commentaires

5 Réponses :


0
votes

Tout d'abord, je pense que la structure de sortie de nettoyage ici est de permettre aux identifiants de l'utilisateur les touches de hachage et la liste des identifiants de recherche sont les valeurs:

output = {}
input.each do |row|
  key = row[:user_id]
  value = row[:search_id]

  output[key] ||= []
  output[key] << value
end


0 commentaires

7
votes

Exigence très étrange en effet. Quoi qu'il en soit xxx


0 commentaires

0
votes

Je suis d'accord avec la représentation de matchs des données et je veux simplement suggérer une version plus courte pour elle (entrée étant le tableau initial). XXX

EDIT: Ceci est Ruby> 1.9


0 commentaires

1
votes
array.group_by{|x| x[:user_id] }.values.map do |val|
  { user_id:   val.first[:user_id], 
    search_id: val.inject([]){|me, el| me << el[:search_id]} }
end

0 commentaires

0
votes
input.inject({}) do
  |m, h| (m[h[:user_id]] ||= []) << h[:search_id]; m
end.inject([]) { |m, (k, v)| m << { :user_id => k, :search_id => v }; m }

0 commentaires