2016-09-29 3 views
1

У меня есть массив A который выглядит следующим образом:как выбрать элементы в массив из нескольких элементов другого массива

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 } ] 

и у меня есть массив B который выглядит следующим образом:

B = ["1234", "13141516”] 

Я пытаюсь выбрать только элементы из массива A, которые соответствуют идентификаторам массива A с элементами Array Bs.

Так возвращаемые результаты, которые я хотел бы это:

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

Есть простой способ пойти по этому поводу?

Я в настоящее время попытался это, но, очевидно, не очень хорошая идея:

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

Но, очевидно, это не динамический, потому что, если бы я имел 3 или 4 элементов в массиве B.

ответ

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

ах, который умный. это сработало. благодаря – adbarads