如何查找数组和数组数组之间的交集

时间:2012-11-21 01:46:41

标签: ruby

我有两个数组:

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

我希望在array2中有:key...存在array1的数组。例如,对于上述内容:

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

2 个答案:

答案 0 :(得分:5)

这满足了你的例子:

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

答案 1 :(得分:1)

这可以使用快速哈希切片:

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

如果array2中的键值重复,它将无效,因为它们会踩踏前面的实例。否则,如果它们不重复,这将非常快,特别是如果array2增长。