如何根据 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)

我该怎么做?也许我的想法是错误的,还有另一种模式可以解决这个问题?

假设数组参数是一个具有适当方法(年龄、体重、身高、薪水)的对象数组,并且您希望返回与您的哈希过滤器完全匹配的对象过滤数组,这样的东西可能会起作用。

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

最新更新