将Ruby数组转换为哈希

Per*_*rk8 -4 ruby arrays hash

我正在尝试编写一个my_transform带有数组的方法,如下所示:

items = ["Aqua", "Blue", "Green", "Red", "Yellow"]
Run Code Online (Sandbox Code Playgroud)

并显示项目的索引如下:

item_to_position = {"Aqua"=>0, "Blue"=>1, "Green"=>2, "Red"=>3, "Yellow"=>4}
Run Code Online (Sandbox Code Playgroud)

我应该能够执行:

my_transform(items) == item_to_position
Run Code Online (Sandbox Code Playgroud)

并收到true.

我考虑过使用each_with_index.我应该先说:

items = ["Aqua", "Blue", "Green", "Red", "Yellow"]

hash = Hash[*array]

def my_transform
Run Code Online (Sandbox Code Playgroud)

我必须将字符串转换为哈希值.任何帮助表示赞赏.

spi*_*ann 9

我会用Array#to_h:

items = ["Aqua", "Blue", "Green", "Red", "Yellow"]
items.each_with_index.to_h
#=> { "Aqua"=>0, "Blue"=>1, "Green"=>2, "Red"=>3, "Yellow"=>4 }
Run Code Online (Sandbox Code Playgroud)

请注意,这to_h是在Ruby 2.1中引入的

使用to_h您的my_transform方法可能如下所示:

def my_transform(items)
  items.each_with_index.to_h
end
Run Code Online (Sandbox Code Playgroud)

  • 这实际上是[`Enumerable#to_h`](http://ruby-doc.org/core-2.3.0/Enumerable.html#method-i-to_h),文档中包含了这个例子;-) (2认同)