我想传递哈希:
filter_search = {age: 20, weight: 30, height: 30, salary: (100000..200000)}
到方法
def search(array, filter)
array.select do |elem|
???????
end
end
filtered_array = search(some_array, filter_search)
我该怎么做?也许我以错误的方式思考,还有另一种模式可以解决这个问题吗?
答案 0 :(得分:0)
假设数组参数是一个具有适当方法(年龄,体重,身高,工资)的对象数组,并且您希望返回与您的哈希过滤器完全匹配的过滤数组,这样的事情可能会起作用。
def search(array, filter)
array.select do |elem|
filter.all? do |key, value|
elem.send(key) == value
end
end
end
如果数组中有哈希而不是对象,则使用:
def search(array, filter)
array.select do |elem|
filter.all? do |key, value|
elem[key] == value
end
end
end