2017-03-15 8 views
-3

の別の配列から値を選択するために、ハッシュの配列を使用して、私はハッシュの二つの配列を持っていると言う:ルビー:ハッシュ

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"}] 
+4

好ましく、結果はこのことでしょうか? – jeffdill2

+0

リンク先のページ「[mcve]」と「[Stack Overflowユーザーにはどの程度の研究努力が必要か?](http://meta.stackoverflow.com/questions/261592)」を含む[ask]をお読みください。あなたの努力の証拠を見たいと思います。何を試しましたか?検索して何も見つけられませんでしたか?あなたはものを見つけましたが、それは助けになりませんでしたか?コードを書こうとしましたか?そうでない場合、なぜですか?もしそうなら、試したことを示す最小のコード例とは何ですか?それがなければ、あなたが試してみたことがないように見えます。 –

答えて

3

あなたはarray_2からハッシュを選択するために、セット内のすべてのarray_1名前を救うことができる:あなたがこれまでに試してみました何

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"}] 
関連する問題