将数组转换为哈希图

203 阅读2分钟

在所有主要的编程语言中,数组和字典都有一个共同的特点:它们都是灵活和可扩展的数据结构,有助于组织和重构代码。

在某些情况下,需要将数组转换为哈希,反之亦然。在本指南中,我们将讨论如何在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}。

最后

在本指南中,我们讨论了如何使用各种方法将数组转换为哈希值。