如何检查对象是否在数组中?

时间:2015-12-04 08:06:44

标签: ruby-on-rails arrays ruby

我有一个这样的数组:

[#<Merit::Badge id: 1, name: "just-registered", level: nil, description: nil, custom_fields: nil>,
 #<Merit::Badge id: 2, name: "change-username", level: nil, description: nil, custom_fields: nil>]

如何检查数组中是否存在徽章ID 2?

4 个答案:

答案 0 :(得分:3)

如果您将该模型加载到其他对象中 - 只需array.include?(badge),如果没有 - array.any?{|b| b.id==2 }(但不要硬编码ID)

答案 1 :(得分:0)

假设您的数组是merits,解决方案应该是:

merits.index { |obj| obj.id == 2 }.nil?

上面的代码行检查数组中的id是否不存在。有关API的详细信息,请see here

答案 2 :(得分:0)

您可以尝试使用argv[argc] == NULL模型active record

Merit::Badge

对于您的案例徽章ID 2

Merit::Badge.exists?(badge.id)

有关Merit::Badge.exists?(2) 的更多信息,请参阅:exists?

答案 3 :(得分:0)

found_object = merge_barge_list.find{|merit_badge| merit_badge.id == 2}
if found_object
  # object found
else
  # object not found
end