You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 02:24:03