我有一个哈希阵列,我想搜索,我想写一个方法,将选项哈希作为参数,并返回所有元素在数组可以动态匹配所有的键/值对,我很难搞清楚它。红宝石阵列#选择一个选项哈希匹配
my_array = [
{
foo: 'a',
bar: 'b',
baz: 'c'
},
{
foo: 1,
bar: 2,
baz: 3
},
{
foo: 'A',
bar: 'B',
baz: 'C'
},
{
foo: 11,
bar: 12,
baz: 13
}
]
# takes an opts hash and returns all elements for which all
# all key/value pairs match
def search_by(opts)
opts.each do |k, v|
self.select { |f| f[k] == f[v] }
end
end
my_array.search_by(foo: 'a', bar: 'b')
# should return { foo: 'a', bar: 'b', baz: 'c' }
我已经尝试了几种不同的方式来动态地组成一个块传递基于如此的相似问题#SELECT,但我还没有多少运气并没有能够准确找到这个用例。动态#选择多种条件而只需执行一次#选择的最佳方式是什么?
这是完美的,谢谢! –