2

我有一个对象数组:

@searches

它可能会返回如下内容:

--- !ruby/object:Profile
attributes:
  id: 2
  name: Basti Stolzi
  username: paintdat
  website: ''
  biography: ''
  created_at: 2013-06-10 19:51:29.000000000 Z
  updated_at: 2013-06-15 10:10:17.000000000 Z
  user_id: 2

--- !ruby/object:Essential
attributes:
  id: 4
  description: ! '#paintdat'
  user_id: 1
  created_at: 2013-06-16 08:19:47.000000000 Z
  updated_at: 2013-06-16 08:19:47.000000000 Z
  photo_file_name: Unknown-1.jpeg
  photo_content_type: image/jpeg
  photo_file_size: 101221
  photo_updated_at: 2013-06-16 08:19:46.000000000 Z

--- !ruby/object:Essential
attributes:
  id: 3
  description: ! '@user_mention_2 well done! #paintdat'
  user_id: 1
  created_at: 2013-06-16 07:56:55.000000000 Z
  updated_at: 2013-06-16 08:00:24.000000000 Z
  photo_file_name: Unknown.jpeg
  photo_content_type: image/jpeg
  photo_file_size: 135822
  photo_updated_at: 2013-06-16 07:56:55.000000000 Z

现在我想在该数组中获取一个唯一的类数组,例如:

--- !ruby/class 'Profile'

--- !ruby/class 'Essential'

如果没有 2 个循环,这样做会很好。希望有人可以帮助我!<3

4

1 回答 1

3

我建议您执行地图和唯一的可枚举运算符来执行此操作。您的代码将类似于(取决于从单个元素中选择类所需的内容):

@searches.map{ |search| search.class }.uniq

有关更多信息,请查看有关ArrayEnumerable的文档

编辑:

请注意,上面可以更简洁地使用&运算符(将符号转换为过程):

@searches.map(&:class).uniq 
于 2013-06-16T08:33:30.610 回答