【发布时间】:2009-10-23 14:15:13
【问题描述】:
我有以下数组:
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"]]
我想创建一个新数组(或哈希),通过第一个选项存储 votes_array 项,以便新数组如下所示:
candidate_votes = [
{"id" => "0", "votes" => [["0", "1"],["0","2"]]},
{"id" => "1", "votes" => [["1", "N"],["1","2"],["1","3"],["1","4"]]},
etc,
etc]
'votes' 键中的投票顺序并不重要,只是所有的投票都被分成相关的 id。
我已经使用以下代码:
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
但想知道是否有更优雅、更清洁或 Rubiyst 的方式?
【问题讨论】: