如果特定属性正确,如何迭代对象数组并返回整个对象?
我的rails应用程序中有以下内容
array_of_objects.each { |favor| favor.completed == false }
array_of_objects.each { |favor| favor.completed }
但由于某种原因,这两个返回相同的结果!我尝试将each
替换为collect
,map
,keep_if
以及!favor.completed
而非favor.completed == false
,但这些都没有效果!
非常感谢任何帮助!
答案 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 }