📜  如何在 Ruby 中制作自定义的哈希数组?

📅  最后修改于: 2022-05-13 01:54:23.551000             🧑  作者: Mango

如何在 Ruby 中制作自定义的哈希数组?

先决条件: Ruby 中的哈希和数组

数组和散列是允许您一次存储多个值的数据结构。在本文中,我们将探讨它们的语法,以及如何结合两者的功能来创建散列数组、检索值并循环它们。
数组是不同或相似项的集合,存储在连续的内存位置。这个想法是将多个相同类型的项目存储在一起,可以通过一个通用名称来引用。
以下是在 Ruby 中声明数组的方式:

arr = ["Geeks", 55, 61, "GFG"]

哈希是一种数据结构,它维护一组称为键的对象,每个键都将一个值与其相关联。简单来说,散列是唯一键及其值的集合。
以下是在 Ruby 中声明数组的方式:

hash_variable = {
                 "key1" => "Geeks", 
                 "key2" => "for", 
                 "key2" => "Geeks"
                }

创建一个哈希数组

您可以通过简单地使用散列初始化数组或使用 array.push() 将散列推入数组中来创建散列数组。
创建哈希数组的简单方法:

hash_arr = [ {"height" => '5 ft', "weight" => '170 lbs',
              "hair" => 'white'},
             {:pet => 'Cat', :nest => 'Bird'} ]

或者使用 array.push() 在数组中推送哈希:

hash_arr = []
hash1 = {"height" => '5 ft', "weight" => '170 lbs', "hair" => 'White'}
hash2 = {:pet => 'Frog', :nest => 'Bird'}

hash_arr.push(hash1)
hash_arr.push(hash2)

注意: “Key”和 :Key 都充当 ruby 哈希中的键。

访问哈希数组

您可以通过使用基于数组的索引来访问特定散列和访问该散列中存在的值的键来访问散列数组的元素。

hash_arr = [ {"height" => '5 ft', "weight" => '170 lbs',
              "hair" => 'white'},
             {:pet => 'Cat', :nest => 'Bird'} ]

hash_arr[0]["height"]    #=> '5 ft'
hash_arr[1][:nest]       #=> 'Bird'

例子:

# Ruby program to illustrate how to access 
# the element of the array of hashes
  
# Creating an array of hashes
hash_arr = [ {"name" => 'GeeksforGeeks', "branch" => 'CSE'},
             {:language1 => 'Ruby', :language2 => 'Python'} ]
  
# Accessing the elements of hash_arr
res1 = hash_arr[0]["branch"]       
res2 = hash_arr[1][:language1]          
  
# Display the results
puts res1
puts res2

输出:

CSE
Ruby

遍历哈希数组

您可以使用简单的 .each do 语句来迭代哈希数组:
例子:

# Ruby program to illustrate how to access 
# the element of the array of hashes
  
# Creating an array of hashes
hash_arr = [ {name: 'Amu', occupation: 'Web developer', hobbies: 'Painting'},
             {name: 'Sumit', occupation: 'HR', hobbies: 'Swimming'} ]
   
 # Iterate over the array of hashes
 # Using .each do statement
hash_arr.each do |hash|
  puts 'Values in this Hash'
  hash.each do |key,value|
    puts (key.to_s + ': ' + value.to_s)
  end
end

输出:

Values in this Hash
name: Amu
occupation: Web developer
hobbies: Painting
Values in this Hash
name: Sumit
occupation: HR
hobbies: Swimming   

注意: .to_s 用于将所有值转换为字符串,以便于打印。