2012-11-21 56 views
0

的陣列之間找到交集,我有兩個數組:如何數組和數組

array1 = [:key1, :key2] 
array2 = [[:key1,2],[:key2,8],[:key3,1]] 

我想有一個數組的數組中array2:key...存在array1。例如,對於上面:

result = [[:key1,2],[:key2,8]] 

回答

5

這滿足你的例子:

array2.select {|key,value| array1.include?(key) } 
1

這個工程使用快速散片:

array1.zip(Hash[array2].values_at(*array1)) 
=> [[:key1, 2], [:key2, 8]] 

它不會,如果鍵值工作在array2不斷重複,因爲他們會跺腳在以前的例子。否則,如果他們不重複,這將非常快,特別是如果array2增長。