【发布时间】:2016-03-30 21:28:00
【问题描述】:
如果数组具有相同的值,但目标是合并数组,但会继承其中的现有哈希数组。
到目前为止的代码:
aff_packages = [{:platform=>"platform 5", :pkg=>"package1", :state=>"somestate"},
{:platform=>"platform 7", :pkg=>"package2", :state=>"somestate"},
{:platform=>"platform 5", :pkg=>"package3", :state=>"somestate"},
{:platform=>"platform 5", :pkg=>"package4", :state=>"somestate"},
{:platform=>"platform 7", :pkg=>"package5", :state=>"somestate"},
{:platform=>"platform 6", :pkg=>"package6", :state=>"somestate"
}]
aff_packages.each do |package|
small_array = []
print_me = big_array = []
hash = Hash.new
print_me << hash
small_array << {
package: package[:pkg],
state: package[:state]
}
(hash[package[:platform]] ||= small_array)
end
产生:
[{"platform 5"=>[{:package=>"package1", :state=>"somestate"}]}]
[{"platform 7"=>[{:package=>"package2", :state=>"somestate"}]}]
[{"platform 5"=>[{:package=>"package3", :state=>"somestate"}]}]
[{"platform 5"=>[{:package=>"package4", :state=>"somestate"}]}]
[{"platform 7"=>[{:package=>"package5", :state=>"somestate"}]}]
[{"platform 6"=>[{:package=>"package6", :state=>"somestate"}]}]
我怎样才能将相同的平台合并在一起,但继承哈希数组并像这样附加它:
[{"platform 5"=>[{:package=>"package1", :state=>"somestate"}], [{:package=>"package3", :state=>"somestate"}], [{:package=>"package4", :state=>"somestate"}]}]
[{"platform 7"=>[{:package=>"package2", :state=>"somestate"}], [{:package=>"package5", :state=>"somestate"}]}]
[{"platform 6"=>[{:package=>"package6", :state=>"somestate"}]}]
【问题讨论】:
-
您的预期结果无效。