Je le tableau suivant:Trier et valeurs magasin de tableau multidimensionnel dans le nouveau tableau dans Ruby
votes_array = [["2", "1"], ["2", "4"], ["4", "3"], ["3", "4"], ["1", "N"], ["3", "1"], ["1", "2"], ["4", "1"], ["0", "1"], ["0", "2"], ["1", "3"], ["1", "4"]]
Et je veux créer un nouveau tableau (ou hachage) qui stocke les éléments de votes_array par leur première option si que le nouveau tableau ressemble à ceci:
candidate_votes = [
{"id" => "0", "votes" => [["0", "1"],["0","2"]]},
{"id" => "1", "votes" => [["1", "N"],["1","2"],["1","3"],["1","4"]]},
etc,
etc]
l'ordre des votes dans la clé « votes » est pas important, juste que tous les votes se séparent dans les ids pertinents.
Je l'ai travailler avec le code suivant:
first_preferences = votes_array.map(&:first)
valid_candidates = first_preferences.uniq
valid_candidates.each do |candidate|
these_votes = votes_array.find_all { |i| i[0] == candidate }
candidate_votes << {"id" => candidate, "votes" => these_votes}
end
Mais se demande s'il y a un plus élégant, plus propre ou Rubiyst façon?
Fonctionnalité impressionnante. +1 –