在所有主要的编程语言中,数组和字典都有一个共同的特点:它们都是灵活和可扩展的数据结构,有助于组织和重构代码。
在某些情况下,需要将数组转换为哈希,反之亦然。在本指南中,我们将讨论如何在Ruby中把数组转换为哈希。
#1 - 使用each方法
假设你有一个数组,你希望转换为一个字符串,其中哈希的键是数组的元素,而哈希的值是数组的元素+10。
要做到这一点,我们可以使用each方法来遍历数组中的每一项,并将其转换为一个字符串。
var =[1,2,3,4,5,6,7,8,9,10]
my_hash ={}
var.each do |i|
my_hash[i]= i+10
end
putsmy_hash
上面的例子将把数组中的每一项转换为一个与它的值配对的哈希键。
产生的字典如图所示。
{1=>11,2=>12,3=>13,4=>14,5=>15,6=>16,7=>17,8=>18,9=>19,10=>20}
#2 - 使用each_with_object
Ruby提供了另一个名为each_with_object的方法。该方法在创建一个新的对象后执行each方法,你可以从数组元素中形成新的对象。
例子。
var =[1,2,3,4,5,6,7,8,9,10]
var.each_with_object({}) do |i, my_hash|
my_hash[i]= i+10
end
上述例子的功能类似于使用each方法。
得到的哈希值是这样的。
{1=>11,2=>12,3=>13,4=>14,5=>15,6=>16,7=>17,8=>18,9=>19,10=>20}
要看到函数是如何迭代数组中的项目并将其转换为哈希值的,你可以在块内添加一个puts元素,如。
var =[1,2,3,4,5,6,7,8,9,10]
var.each_with_object({}) do |i, my_hash|
my_hash[i]= i+10
putsmy_hash
end
如果你运行上面的代码,你应该得到一个哈希创建过程的分层视图。
#3 - 使用to_h方法
to_h方法被定义在数组类中。它的作用是将一个数组转换为键值对形式的哈希。
例子。
var =[[1,2], [3,4], [5,6]]
putsvar.to_h
该方法将每个嵌套数组转换为键值对。
{1=>2,3=>4,5=>6}
该方法也接受一个块。如果指定了任何块,该方法将返回每个数组元素的块的结果。
例如,下面是一个显示值为真或假的方法。
var =[1,2]
putsvar.to_h {|i| [i.even?, i]}.
得到的字典。
{false=>1,true=>2}。
最后
在本指南中,我们讨论了如何使用各种方法将数组转换为哈希值。