我正在尝试做一个让我现在很难过的小实验。
我创建了新的哈希
tt = Hash.new()
然后我用键在里面添加两个哈希:
tt.merge!(:in => Hash.new)
tt.merge!(:out => Hash.new)
所以我有一个看起来像这样的哈希:
{
:in => {},
:out => {}
}
现在我有另一个名为 res 的散列散列,我对其进行迭代并对每个散列执行一个 IF 语句:
res.each do |x|
if x[:id] == nil
tt[:out].merge!(x)
else
tt[:in].merge!(x)
end
end
然而,这只会将前一个哈希的最后一个值附加到新哈希的 out 和 in 中。
我想要做的是使用 IF 语句将新的哈希值放在 IN 或 OUT 的键下
所以它最终看起来像:
{
:in => {{:1 => 1 ,:2 => 1 ,:3 => 1 ,:4 => 1 ,:5 => 1 },{:1 => 1 ,:2 => 1 ,:3 => 1 ,:4 => 1 ,:5 => 1 }},
:out => {{:1 => 1 ,:2 => 1 ,:3 => 1 ,:4 => 1 ,:5 => 1 }, {:1 => 1 ,:2 => 1 ,:3 => 1 ,:4 => 1 ,:5 => 1 }}
}
另外-我应该为此使用哈希还是数组?我想最终将其导出为 JSON。
例如,这有效。但不确定是否正确:
tt = Hash.new(:in => Hash.new, :out => Hash.new)
tt.merge!(:in => Array.new)
tt.merge!(:out => Array.new)
ap tt.class
res.each do |x|
if x[:id] == nil
tt[:out] << x
else
tt[:in] << x
end
end
纳克斯