2016-03-05 46 views
-5

我想通过哈希:如何基于Ruby中的条件哈希过滤一个对象数组?

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

是阵列参数对象的数组有适当的方法(年龄,体重,身高,薪水),并且你想返回一个与你的哈希过滤器完美匹配的过滤数组。 –

+0

标题和问题不匹配。 – sawa

回答

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 
+0

好的,谢谢。我刚刚测试过,它的工作原理!对不起,我的英语和Ruby不好) –

相关问题