4

我正在尝试将两个数组组合成一个哈希。

@sample_array = ["one", "Two", "Three"]
@timesheet_id_array = ["96", "97", "98"]

我想将结果输出到一个名为@hash_array 的哈希中。有没有一种简单的方法可以将两者组合在一个代码块中,这样如果你在最后调用 puts 它在控制台中看起来像这样

{"one" => "96", "Two" => "97", "Three" => "98"}

我认为这可以用一两行代码来完成。

4

5 回答 5

40

试试这个

keys = [1, 2, 3]
values = ['a', 'b', 'c']
Hash[keys.zip(values)]

谢谢

于 2012-10-02T17:30:06.140 回答
8
@hash_array = {}
@sample_array.each_with_index do |value, index|
  @hash_array[value] = @timesheet_id_array[index]
end
于 2012-10-02T17:29:55.430 回答
2

恕我直言,看起来最好:

[:a,:b,:c].zip([1,2,3]).to_h

# {:a=>1, :b=>2, :c=>3}
于 2020-06-12T15:09:48.263 回答
1

Nic 博士建议在http://drnicwilliams.com/2006/10/03/zip-vs-transpose/上很好地解释了 2 个选项

于 2012-10-02T17:26:06.527 回答
0
@hash_array = {}
0.upto(@sample_array.length - 1) do |index|
  @hash_array[@sample_array[index]] = @timesheet_id_array[index]
end
puts @hash_array.inspect
于 2012-10-02T17:27:32.230 回答