我想通过他们有许多关系对一组对象进行分组......就像这样
s.inventoryitems.group_by{|i| i.locations}
为了简单起见,我回复了这样的事情:
{[1, 2, 3]=>["a"], [2]=>["b", "c"], []=>["d"]}
我正在寻找这样的结果:
{[1] => ["a"], [2] => ["a","b","c"], [3] => ["a"], [] => ["d"]}
我正致力于重组事情,所以这一切都可以在更直观的数据库和数据库中完成。以模型关联为导向的方式,但与此同时我需要立即实现它,并需要与一些Ruby争论它并且我不确定。谢谢你的帮助!
答案 0 :(得分:1)
如果你想翻转这样的结构,你需要展开它,将其反转并重新分组。您可以通过迭代并手动重新组合来完成此操作:
h = { [ 1, 2, 3 ] => [ "a" ], [ 2 ] => [ "b", "c" ], [ ] => [ "d" ] }
s = { }
h.each do |keys, values|
keys.each do |key|
values.each do |value|
s[[ key ]] ||= [ ]
s[[ key ]] << value
end
end
if (keys.empty?)
s[[ ]] = values
end
end
puts s.inspect
# => {[1]=>["a"], [2]=>["a", "b", "c"], [3]=>["a"], []=>["d"]}