我试图将特定键和值的散列值附加到特定键和值,然后根据值对它们进行排序。所以这就是我想要做的事情
@arr = Hash.new
$m.each do |s|
if (s.start.hour == check.hour)
if params[:type] == 'A'
s.As.each do |w|
@arr['name'].push((w.name))
@arr['id'].push((w.id).to_i)
end
end
end
end
很明显,我只会获得最后一个值,但我无法找到如何为此哈希附加这些值。
对ruby不太熟悉,所以对此有所帮助以及如何根据'id's in @arr
答案 0 :(得分:2)
根据您的要求,您正在使用Hash,以便以后开展更多工作。您当前的数据结构如下所示:
{
id: [ 1, 2, 3 ],
name: [ a, b, c ]
}
这意味着您必须使用数组和索引对id
和name
进行排序和排列。
如果你重组它以使用id
作为关键字,Hash支持您想要实现的功能:
{
1: { name: a },
2: { name: b },
3: { name: c }
}
要执行此操作,您可以在循环中为哈希值分配值,如下所示:
@arr[w.id.to_i] = { "name" => w.name }
然后可以按以下顺序访问您的Hash:
@arr.sort.map do |id, value|
# work with id and value["name"]
end
重申Mark Thomas所说的,使用一个有意义的名称代替H {而不是@arr
,因为这只会增加混乱。