Ruby中如何将哈希数组转换为键值对依次排列的扁平化数组
Ruby 哈希数组扁平化转换实现方案
最简实现
直接使用 Ruby 内置的 flat_map 方法即可快速完成转换:
# 输入数据源 input = [ {:locale=>:"en-US", :key=>:key1}, {:locale=>:"en-US", :key=>:key2}, {:locale=>:da, :key=>:key1} ] # 转换逻辑 output = input.flat_map do |hash| hash.flat_map { |key, value| [key.to_s, value.to_s] } end
逻辑说明
- 外层
flat_map遍历所有哈希元素,自动把每个哈希处理后的结果拼接为单个数组 - 内层遍历单个哈希的键值对,将原本为符号类型的键和值统一转为字符串,组装成
[键字符串, 值字符串]的结构 - 两层
flat_map自动完成数组扁平化,不需要额外调用flatten方法
验证输出
打印转换结果即可得到目标格式:
p output # => ["locale", "en-US", "key", "key1", "locale", "en-US", "key", "key2", "locale", "da", "key", "key1"]
简化写法(Ruby 2.7+ 支持)
用编号参数可以进一步缩短代码:
output = input.flat_map { _1.to_a.flatten.map(&:to_s) }
内容的提问来源于stack exchange,提问作者Abdel P.
相关产品推荐
相关产品推荐

