1

私の配列には、さまざまな量のオブジェクトが含まれています。配列を反復処理し、各オブジェクトidを一意の変数として保存する必要があります。配列内のオブジェクトの量が異なる場合、どうすればよいですか?

"items"=>[{"id"=>"B00668BTCI"}, {"id"=>"B0041KJSL2"}]

最大 16 の ID をサポートできる新しいオブジェクトに情報を保存する必要があります。@object.id_one、@object.id_two など...

4

2 に答える 2

3

データを保存する適切な方法は、後でデータを参照またはアクセスする方法によって異なります。メタプログラミングは面白くて楽しいものですが、ニーズによってはやり過ぎかもしれません。選択肢を見てから、それを決定する必要があります。別の方法は、配列内にあります。

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
...
于 2013-09-09T18:57:39.210 に答える
1

ここでメタプログラミングを行う必要があります...
ここに投稿があります。インスタンス変数を動的に作成する方法を示す回答(Chirantanによる)があります。

お役に立てれば。

編集
詳細を知りたい場合に備えて、動的なメソッドの作成に関する良い記事も見つけました。チェックしてください。

Ryan Angilly による Ruby でのクラス メソッドの動的追加

于 2013-09-09T18:56:11.890 に答える