Ruby on Rails - 从具有特定现有密钥顺序的哈希数组中获取值数组

时间:2015-02-10 03:29:02

标签: ruby-on-rails ruby arrays ruby-1.8.7

原始数组喜欢这个:

[{:age=>28, :name=>"John", :id=>1}, {:name=>"David", :age=>20, :id=>2, :sex=>"male"}]

现有密钥的顺序:

[:id, :name, :age] or ['id', 'name', 'age']

结果应为:

[[1, "John", 28], [2, "David", 20]]

感谢教我。

P / s:我使用的是Ruby 1.8.7和Rails 2.3.5

由于

2 个答案:

答案 0 :(得分:4)

这是一种使用#values_at的好方法:

records = [
  {:age=>28, :name=>"John", :id=>1},
  {:name=>"David", :age=>20, :id=>2, :sex=>"male"}
]

attributes = [:id, :name, :age]

records.collect { |h| h.values_at(*attributes) }
# => [[1, "John", 28], [2, "David", 20]]

答案 1 :(得分:3)

映射所有记录,然后按给定的顺序映射属性,以按指定的顺序返回属性的值。

records = [
  {:age=>28, :name=>"John", :id=>1},
  {:name=>"David", :age=>20, :id=>2, :sex=>"male"}
]

attributes = [:id, :name, :age]
records.map do |record|
  attributes.map { |attr| record[attr] }
end