2016-09-29 2 views
1

ich ein Array haben A die wie folgt aussieht:, wie Elemente in Array auszuwählen, aus mehreren Elementen in einem anderen Array

A = [ { "id" => "1234",  "name" => "audi",  "isCool" => false }, 
     { "id" => "5678",  "name" => "acura",  "isCool" => false }, 
     { "id" => "9101112", "name" => "bentley", "isCool" => true }, 
     { "id" => "13141516", "name" => "rollsroyce", "isCool" => true }, 
     { "id" => "17181920", "name" => "toyota",  "isCool" => true } ] 

und ich habe ein Array B die wie folgt aussieht:

B = ["1234", "13141516”] 

Ich versuche, nur Elemente aus Array A auszuwählen, die den Array-IDs mit Array-Bs-Elementen entsprechen.

So die zurückgegebenen Ergebnisse, die ich möchte, ist:

C = [ { "id" => "1234",  "name" => "audi",  "isCool" => false }, 
     { "id" => "13141516", "name" => "rollsroyce", "isCool" => true } ] 

Gibt es eine einfache Möglichkeit, um dies zu realisieren?

Ich habe dies zur Zeit versucht, aber offensichtlich keine gute Idee:

a.select {|x| x['id'] == B.first || B.last} 

Aber offensichtlich ist dies nicht dynamisch, denn was ist, wenn ich hatte 3 oder 4 Elemente in Array B.

Antwort

4
A.select { |x| B.include?(x['id']) } 
+0

ah das ist schlau. es funktionierte. Vielen Dank – adbarads

Verwandte Themen