当您想要聚合数组元素时,这里有一些编写方法。
考虑以下用户数组,并希望按原籍国查找用户数量。
# 集計したいユーザー配列
user_list = [
{ user_id: , hometown: '東京都' },
{ user_id: , hometown: '大阪府' },
{ user_id: , hometown: '東京都' },
{ user_id: , hometown: '北海道' },
{ user_id: , hometown: '大阪府' },
{ user_id: , hometown: '東京都' }
]
# 出身地ごとの人数を次のようにハッシュにまとめたい
{"東京都"=>, "大阪府"=>, "北海道"=>}
* 示例代码执行环境
$ ruby --version
ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x86_64-darwin21]
result = {}
user_list.each do |user|
result[user[:hometown]] ||=
result[user[:hometown]] +=
end
result
# => {"東京都"=>3, "大阪府"=>2, "北海道"=>1}
我想写一些更像 Ruby 的东西。
group_by
user_list.group_by { |user| user[:hometown] }.transform_values(&:length)
# => {"東京都"=>3, "大阪府"=>2, "北海道"=>1}
消除了开始时准备空哈希的需要,并且描述变得简洁。
tally
user_list.map { |user| user[:hometown] }.tally
# => {"東京都"=>3, "大阪府"=>2, "北海道"=>1}
它也可以简单地使用Enumerable#tally
编写,这是Ruby 2.7 中添加的一种相对较新的方法。
原创声明:本文系作者授权九品源码发表,未经许可,不得转载;
原文地址:https://www.19jp.com/show-308627567.html
以上就是[Ruby] 我要聚合数组元素!的详细内容,更多关于[Ruby] 我要聚合数组元素!的资料请关注九品源码其它相关文章!