Что такое эффективный способ преобразования и подсчета массива? - PullRequest
0 голосов
/ 01 февраля 2012

У меня есть массив объектов, которые я хочу сосчитать и преобразовать. Например:

[#<User id:1, count:0>, #<User id:2, count:0>, #<User id:2, count:0>, #<User id:3, count:0>, #<User id:1, count:0>, #<User id:1, count:0>]

станет:

[#<User id:1, count:3>, #<User id:2, count:2>, #<User id:3, count:1>]

Преобразование - это то, что смущает меня, так как «карта» проходит прямо, но это было бы рекурсивно.

Ответы [ 2 ]

2 голосов
/ 01 февраля 2012
[user1, user2, user2, user3, user1, user1].group_by(&:id).map do |id, users|
  users.first.count = users.size
  users.first
end
0 голосов
/ 01 февраля 2012
[user1, user2, user2, user3, user1, user1] \
  .group_by(&lambda{|x| x}) \
  .map{ |k, v| k.count = v.count; k }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...