私の配列には、さまざまな量のオブジェクトが含まれています。配列を反復処理し、各オブジェクトid
を一意の変数として保存する必要があります。配列内のオブジェクトの量が異なる場合、どうすればよいですか?
"items"=>[{"id"=>"B00668BTCI"}, {"id"=>"B0041KJSL2"}]
最大 16 の ID をサポートできる新しいオブジェクトに情報を保存する必要があります。@object.id_one、@object.id_two など...
私の配列には、さまざまな量のオブジェクトが含まれています。配列を反復処理し、各オブジェクトid
を一意の変数として保存する必要があります。配列内のオブジェクトの量が異なる場合、どうすればよいですか?
"items"=>[{"id"=>"B00668BTCI"}, {"id"=>"B0041KJSL2"}]
最大 16 の ID をサポートできる新しいオブジェクトに情報を保存する必要があります。@object.id_one、@object.id_two など...
データを保存する適切な方法は、後でデータを参照またはアクセスする方法によって異なります。メタプログラミングは面白くて楽しいものですが、ニーズによってはやり過ぎかもしれません。選択肢を見てから、それを決定する必要があります。別の方法は、配列内にあります。
array_of_ids = items.map(&:values).flatten
または
array_of_ids = items.map { |item| item["id"] }
次に、すべての ID が配列array_of_ids
内にあり、例では次のようになります。
["B00668BTCI", "B0041KJSL2"]
アクセス可能:
array_of_ids[0] # first id
array_of_ids[1] # second array
...
ここでメタプログラミングを行う必要があります...
ここに投稿があります。インスタンス変数を動的に作成する方法を示す回答(Chirantanによる)があります。
お役に立てれば。
編集
詳細を知りたい場合に備えて、動的なメソッドの作成に関する良い記事も見つけました。チェックしてください。