Ruby中如何从两个数组按索引对应生成哈希的键值对
Ruby中将两个数组合并为索引对应哈希的内置方法
有现成的原生实现,不需要手动遍历索引赋值,最常用的实现方式如下:
基础用法示例
首先定义两个测试数组:
keys = [:name, :age, :gender] values = ["张三", 25, "男"]
写法1(兼容全Ruby版本)
使用Hash[]构造方法搭配Array#zip:
result_hash = Hash[keys.zip(values)] # 输出结果:{:name=>"张三", :age=>25, :gender=>"男"}
写法2(Ruby 2.1+ 更简洁)
直接调用to_h方法完成转换:
result_hash = keys.zip(values).to_h
注意事项
- 若两个数组长度不一致,会以第一个数组的长度为准:第一个数组长出的索引位置对应的值为
nil,第二个数组长出的元素会直接被丢弃 - 若作为键的数组存在重复元素,靠后的索引对应的值会覆盖前面的值,符合哈希键唯一的特性
示例(长度不一致场景):
keys = [:a, :b, :c, :d] values = [1, 2] p keys.zip(values).to_h # => {:a=>1, :b=>2, :c=>nil, :d=>nil}
内容的提问来源于stack exchange,提问作者George Barda
相关产品推荐
相关产品推荐

