1

データをすばやく抽出する必要がある大きな Ruby 構造がいくつかあります。特定の状況下でデータを変換することはできますが、データの形式を制御することはできません。displayName を「キー」として使用する場合、次のハッシュから単一のアイテムを抽出する最も効率的な方法は何ですか?

[
  {'displayName'=>'Some Key 1', 'values'=>[1,2,3]},
  {'displayName'=>'Some Key 2', 'values'=>["Some text"]},
  {'displayName'=>'Some Key 3', 'values'=>["Different text","More text"]},
  {'displayName'=>'Some Key 4', 'values'=>[2012-12-12]}
]

各ハッシュには、理解を助けるために削除した他のキーが含まれています。

問題は、特定の状況では、displayName フィールドをプレフィックス サブストリングで一致させる必要があることです。いつ .each を使用して手動で一致させるか、または .select を使用して一般的なケースの正確な一致を取得し、後でプレフィックスのフォールバックを取得するかを知っている実用的な経験はありますか? または、私が見逃している一般的なトリックがあります。

4

2 に答える 2

2

これを一度行っている場合は、おそらくセットを反復処理して、必要なものを見つける必要があります。

row = data.find do |row|
  row['displayName'] == name
end

row && row['values']

複数回実行している場合は、一時的な派生構造を作成する単純な変換を使用して、インデックス付き構造を作成する必要があります。

hashed = Hash[
  data.collect do |row|
    [ row['displayName'], row['values'] ]
  end
]

hashed[name]
于 2013-04-26T15:37:16.427 に答える