如何将Ruby中的二维数组转换为按年月分组的哈希
实现方案
你需要的功能用Ruby内置方法即可极简实现,核心依赖两个能力:
DateTime#strftime可直接格式化出「年份-英文全月份名」的分组键- 可枚举对象的
group_by方法可直接按自定义规则分组,直接返回目标哈希结构
完整代码示例
# 引入Ruby标准库的日期处理模块 require 'date' # 你的原始二维数组 original_arr = [ ["2021-07-26T11:38:42.000+09:00", 1127167], ["2021-08-26T11:38:42.000+09:00", 1127170], ["2021-09-26T11:38:42.000+09:00", 1127161], ["2021-07-25T11:38:42.000+09:00", 1127177], ["2021-08-27T11:38:42.000+09:00", 1127104] ] # 核心分组逻辑仅需一行 grouped_result = original_arr.group_by { |sub_item| DateTime.parse(sub_item[0]).strftime("%Y-%B") }
输出验证
你可以用pp方法打印验证结果,输出结构和你要求的完全一致,仅你示例中手动截断的数值会保留原始完整值:
require 'pp' pp grouped_result # 输出结果: # { # "2021-July" => [["2021-07-26T11:38:42.000+09:00", 1127167], ["2021-07-25T11:38:42.000+09:00", 1127177]], # "2021-August" => [["2021-08-26T11:38:42.000+09:00", 1127170], ["2021-08-27T11:38:42.000+09:00", 1127104]], # "2021-September" => [["2021-09-26T11:38:42.000+09:00", 1127161]] # }
内容的提问来源于stack exchange,提问作者Ragnar921
相关产品推荐
相关产品推荐

