获得与条件数组的数组我有一个包含哈希值的数组,像这样:如何从一个数组
[
{:id => 1, :week => 1, :year => 2014},
{:id => 2, :week => 2, :year => 2014},
{:id => 1, :week => 1, :year => 2015},
{:id => 2, :week => 5, :year => 2015},
]
我需要的是一个阵列阵列,包含每两个值: 第一个值来自2014年第一个数组的散列,第二个散列是2015年第一个数组的散列,如果它与第一个散列具有相同的星期和ID。
如果没有来自2015年的同等ID和星期的散列,那么第二个值必须为零,反之亦然,第一个值为零。
对于上面的数组,新数组应该是这样的:
[
[{:id => 1, :week => 1, :year => 2014}, {:id => 1, :week => 1, :year => 2015}],
[{:id => 2, :week => 2, :year => 2014}, nil],
[nil, {:id => 2, :week => 5, :year => 2015}],
]
-E- 我的方法:
result = []
all_ids.each do |id|
all_weeks.each do |week|
v1 = array.select{ |v| v.id == id && v.week == week && v.year == 2014}
v2 = array.select{ |v| v.id == id && v.week == week && v.year == 2015}
v1 = v1.length == 1 ? v1.first : nil
v2 = v2.length == 1 ? v1.first : nil
result << [v1, v2]
end
end
这似乎不是很有效,因为我有多次迭代阵列
我更新的问题 – 2015-02-05 13:48:51
'a.group_by {| EL | [el [:id],el [:week]]}'可能是一个好方法。 – mudasobwa 2015-02-05 13:49:11