红宝石:使用哈希数组从哈希的另一个阵列
问题描述:
说我有散列值的两个数组中选择值:红宝石:使用哈希数组从哈希的另一个阵列
array_1 = [{name: "Dale Cooper", role: "author"},
{name: "Lucy Moran", role: "author"},
{name: "Harry Truman", role: "author"}]
array_2 = [{author: "Lucy Moran", title: "Lorem"},
{author: "Bobby Briggs", title: "Ipsum"},
{author: "Harry Truman", title: "Dolor"}]
我怎么会去从作者是在array_1
从array_2
只是哈希选择?最好,其结果必然是这样的:
array_3 = [{author: "Lucy Moran", title: "Lorem"},
{author: "Harry Truman", title: "Dolor"}]
答
您可以将所有在一组array_1
名保存,以便选择从array_2
哈希:
require 'set'
array_1 = [{ name: 'Dale Cooper', role: 'author' },
{ name: 'Lucy Moran', role: 'author' },
{ name: 'Harry Truman', role: 'author' }]
array_2 = [{ author: 'Lucy Moran', title: 'Lorem' },
{ author: 'Bobby Briggs', title: 'Ipsum' },
{ author: 'Harry Truman', title: 'Dolor' }]
authors = Set.new(array_1.map{ |h| h[:name] })
array_3 = array_2.select{ |h| authors.include?(h[:author]) }
# [{:author=>"Lucy Moran", :title=>"Lorem"},
# {:author=>"Harry Truman", :title=>"Dolor"}]
你尝试过这么远吗? – jeffdill2
请阅读“[问]”,包括链接页面,“[mcve]”和“[Stack Overflow用户需要多少研究工作?](http://meta.*.com/questions/261592)”。我们希望看到你的努力的证据。你尝试了什么?你搜索并没有找到任何东西?你有没有找到东西,但它没有帮助?你有没有尝试写代码?如果不是,为什么?如果是这样,那么最小的代码示例显示了您尝试的内容以及它为什么不起作用?没有它,看起来你没有尝试并希望我们为你写信。 –