【发布时间】:2017-11-07 17:44:09
【问题描述】:
我有一个要搜索的哈希数组,我想编写一个方法,该方法将选项哈希作为参数并返回数组中与所有键/值对动态匹配的所有元素,我很难弄清楚。
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' }
根据 SO 上的类似问题,我尝试了几种不同的方法来动态组合块以传递给 #select,但我运气不佳,也无法找到这个确切的用例。什么是动态#select 与多个条件,而只需要执行一次#select 的最佳方式?
【问题讨论】: