Ruby根据属性查找并返回数组中的对象

时间:2016-01-30 18:09:14

标签: ruby-on-rails arrays ruby

如果特定属性正确,如何迭代对象数组并返回整个对象?

我的rails应用程序中有以下内容

array_of_objects.each { |favor| favor.completed == false }

array_of_objects.each { |favor| favor.completed }

但由于某种原因,这两个返回相同的结果!我尝试将each替换为collectmapkeep_if以及!favor.completed而非favor.completed == false,但这些都没有效果!

非常感谢任何帮助!

4 个答案:

答案 0 :(得分:26)

array_of_objects.select { |favor| favor.completed == false }

将返回已完成的所有对象为false。

您也可以使用find_all代替select

答案 1 :(得分:11)

对于第一种情况,

array_of_objects.reject(&:completed)

对于第二种情况,

array_of_objects.select(&:completed)

答案 2 :(得分:1)

您需要使用Enumerable#find_all来获取所有匹配的对象。

array_of_objects.find_all { |favor| favor.completed == false }

答案 3 :(得分:0)

对于较新版本的 ruby​​,您可以使用 filter 方法

array_of_objects.filter { |favor| favor.completed == false }

参考:https://apidock.com/ruby/Array/filter