设置具有数组值的哈希

时间:2018-04-17 00:09:43

标签: arrays ruby hash

我希望设置一个带数组的哈希值,即<。,

customers = {first: [name, age, height, etc], second: [name, age, height, etc], ...}

如何访问和编辑客户特定属性,例如customers[first[age]]

2 个答案:

答案 0 :(得分:2)

如果您的个人客户数据是您所显示的数组,那么您需要为这些属性设置固定索引,例如名称始终位于索引0,年龄位于索引1,您可以通过执行

来访问数据
customers[:first][0] # name
customers[:first][1] # age
customers[:first][2] # height

但是如果您控制数据的生成方式,那么您应该使用Ruby Hash来实现此目的,因此生成的数据应该采用这种格式,即散列数组

customers =  [{ name: 'John Doe', age: 30, height: 175 }, { name: 'John Doe', age: 30, height: 175 }]

你现在可以做

customers.first[:name] # for first customer
customers[0][:age] # for first customer

customers[1][:name] # for second customer

答案 1 :(得分:2)

由于您要求采用不同的方式来设置此数据结构,因此还有另一种选择:

设置课程Customer

class Customer
   attr_accessor :name, :age, :height
   def initialize(name:, age:, height:)
     @name = name
     @age = age
     @height = height
   end
end

然后,无论您设置了数组还是哈希,您都可以通过调用对象上的方法来访问元素属性。

这是一个数组示例:

customers = [
  Customer.new(name: "John", age: 30, height: 175),
  Customer.new(name: "Sam", age: 25, height: 160)
]

然后你可以访问元素

customer[0].name
# => "John"
customer[0].name = "Tom"
# => "Tom"
customer[1].age
# => 25
# etc...