当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Ruby Array转Hash用法及代码示例


在本文中,我们将讨论如何将数组转换为哈希红 gems 。当我们有数组格式的数据并且需要将其组织成键值对以便于访问和操作时,将数组转换为哈希会很有用。

使用 Hash::[] 构造函数将数组转换为哈希

Hash::[] 构造函数方法直接从数组创建哈希,其中数组中的每对元素都被视为键值对。

用法:

Hash[*array]

例子:在此示例中,我们将数组转换为哈希,其中使用 Hash::[] 构造函数将数组中的每个元素转换为键值对

# Define an array with elements representing key-value pairs
array = [:a, 1, :b, 2, :c, 3]

# Convert an array into a hash Using Hash::[] constructor
# Convert the array directly into a hash using the Hash::[] constructor
hash = Hash[*array]
# Output the resulting hash
puts hash.inspect  # Output: {:a=>1, :b=>2, :c=>3}

输出
{:a=>1, :b=>2, :c=>3}

使用 Array#each_slice 将数组转换为哈希

Array#each_slice 方法允许以块的形式迭代数组,其中每个块包含两个表示键值对的元素。然后,使用Hash::[]构造函数中,我们可以将这些对转换为哈希值。

用法:

Hash[*array.each_slice(2).to_a.flatten]

例子:在此示例中,我们使用 Array#each_slice 成对迭代数组,然后展平结果数组并使用 Hash::[] 将它们转换为哈希值

# Program in ruby to convert an array into a hash  using Array#each_slice and Hash::[] constructor

# Define an array with elements representing key-value pairs
array = [:a, 1, :b, 2, :c, 3]
# Iterate over the array in pairs using each_slice(2), then flatten the resulting arrays
# and convert them into a hash using Hash::[]
hash = Hash[*array.each_slice(2).to_a.flatten]
# Output the resulting hash
puts hash.inspect  # Output: {:a=>1, :b=>2, :c=>3}

输出
{:a=>1, :b=>2, :c=>3}

使用带有块的 Hash#[] 将数组转换为哈希

在此方法中,我们迭代数组并单独处理每个元素。然后我们可以指定一个块,您可以在其中定义每个元素应如何转换为键值对。

用法:

array.each_with_object({}) { |element, hash| hash[element_key] = element_value }


例子:在此示例中,我们使用以下方法成对迭代数组each_slice(2)并将每对元素分配为新哈希中的键值对。

# Define an array with elements representing key-value pairs
array = [:a, 1, :b, 2, :c, 3]
#  convert an array into a hash Using Hash#[] with a block
# Iterate over the array in pairs using each_slice(2)
# For each pair, assign the first element as the key and the second element as the value
hash = array.each_slice(2).each_with_object({}) { |(key, value), h| h[key] = value }
# Output the resulting hash
puts hash.inspect  # Output: {:a=>1, :b=>2, :c=>3}

输出
{:a=>1, :b=>2, :c=>3}

相关用法


注:本文由纯净天空筛选整理自abhaystriver大神的英文原创作品 How to convert Array to Hash in Ruby?。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。