2016-03-05 44 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不好) –

相關問題