我有一个我想要计算和转换的对象数组。例如:
[#<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>]
转变让我感到困惑,因为“地图”直接通过,但这将是递归的。
答案 0 :(得分:2)
[user1, user2, user2, user3, user1, user1].group_by(&:id).map do |id, users|
users.first.count = users.size
users.first
end
答案 1 :(得分:0)
[user1, user2, user2, user3, user1, user1] \
.group_by(&lambda{|x| x}) \
.map{ |k, v| k.count = v.count; k }