2012-04-17 12 views
0

「学生ID」、「名前」、「住所」、「得点」、「バッジID」などの項目を含むリストがあります。この既存のリストから別のキーを使ってハッシュテーブルを作成するには(元のリストを別の変数名で保存する)Rubyの既存のリストからハッシュテーブルを作成する

私は

new_school=Hash.new(old_school) // ruby 

を試してみましたが、私はハッシュのための新しいキーとしてbadge_IDフィールドを割り当てる方法を見つける傾けます。

objects.index_by do |object| 
    <code to calculate the hash key> 
end 

objects.group_by do |object| 
    <code to calculate the hash key> 
end 

#index_byメソッドは値を行います。事前

答えて

1

にあなたはハッシュに配列(または任意の他の列挙オブジェクト)をオンにするactivesupportの宝石を使用することができます助けを

おかげで、 #group_byメソッドは、ハッシュ値をそのハッシュキーにマップされるオブジェクトの配列にします

ハッシュキーを計算するコードは、属性を参照するのと同じくらい単純にすることができます各オブジェクトの

1

また、オブジェクトの値の配列を取得してハッシュに変換することを意味する場合もあります。このように:この中へ

[123, 'Jim Bob', '123 Fake St', 90, 321] 

keys = [:student_id, :name, :address, :score, :badge_id] 
values = [123, 'Jim Bob', '123 Fake St', 90, 321] 
Hash[*keys.zip(values).flatten] 

{:student_id => 123, 
    :name => 'Jim Bob', 
    :address => '123 Fake St', 
    :score => 90, 
    :badge_id => 321} 

もしそうなら、あなたはこれを行うことができます

関連する問題