我有一组具有某些属性的对象。 我还有一个常数的ID数组。
我想返回在常量数组中存在id的整个对象。
这是我到目前为止所做的,但它只返回true或false,我需要它返回所有对象的数组:
some_object_attributes.collect { |attr| (Constant::SOME_IDS.include? attr.object.object_type_id)}
如何返回在常量数组中具有ID的每个attr.object
?
答案 0 :(得分:3)
您不想要collect
(又名map
),它会返回块的结果。您希望根据块的结果返回集合中的对象。为此,有select:
some_object_attributes.select do |attr|
Constant::SOME_IDS.include? attr.object.object_type_id
end
答案 1 :(得分:3)
出于好奇,对于一个非常庞大的阵列,它可能会更快:
some_object_attributes.group_by do |attr|
attr.object.object_type_id
end.values_at(*Constant::SOME_IDS).flatten
这是O(N)
,因为它不会查找每个元素的Constant::SOME_IDS
数组。
答案 2 :(得分:0)