类似于ActiveRecords的“where”用于纯Ruby的数组

时间:2016-09-03 16:22:50

标签: ruby activerecord

假设我有一组具有相同键的哈希值,如:

array = [ 
  {attr1: val1, attr2: val2},
  {attr1: val3, attr2: val4} 
]

事情是,我希望有一些很酷的调用,如ActiveRecords'“where”,以便在特定元素上面搜索数组。像

这样的东西
array.where(attr1: val1)

将返回符合条件的所有元素。使用普通的Ruby。

是的,总有一个很好的老.each,但是让我们在这里以金属红宝石的方式踏上完全。

谢谢!

1 个答案:

答案 0 :(得分:4)

ruby​​中有findselect(分别为一个或多个结果)。

selected = array.select do |item|
  item[:attr1] == 'something'
end

select会将array的每个元素传递给块,然后选择块返回truthy值的那些元素。 find类似,但它将返回块返回truthy值的第一个元素。