0

我有两个数组:

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

我想要一个数组数组,array2其中:key...存在array1. 例如,对于上述:

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

2 回答 2

5

这满足您的示例:

array2.select {|key,value| array1.include?(key) }
于 2012-11-21T01:51:35.513 回答
1

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

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

如果重复的键值将不起作用array2,因为它们会踩到以前的实例。否则,如果他们不重复,这将非常快,尤其是在array2增长的情况下。

于 2012-11-21T02:18:06.270 回答