私はJSONのAPIからデータを取得してきましたが、現在は初歩的な問題につまずいています
データは、GoogleやFacebookなどの企業にあり、次のように配列またはハッシュにあります。
[
{"id"=>"1", "properties"=>{"name"=>"Google", "stock_symbol"=>GOOG, "primary_role"=>"company"}},
{"id"=>"2", "properties"=>{"name"=>"Facebook", "stock_symbol"=>FB, "primary_role"=>"company"}}
]
以下は、試してみたい2つの操作です。
- 各会社について、名前、ID、および銘柄記号(「Google-1-GOOG」および「Facebook-2-FB」)を印刷します
- GoogleとFacebookから「プライマリロール」キー/値を削除する
- GoogleとFacebookに新しい「業界」キー/値を割り当てます
何か案は?
Rubyの初心者ですが、配列とハッシュの一部の関数/メソッド(未定義のメソッドなど)で問題が発生しています。これは配列OFハッシュのようです
ありがとうございました!
回答 1 件
関連記事
- 単一レベルのネストされたハッシュをその場で拡張する方法は?
- レール上の配列rubyに追加すると間違った出力が得られる
- 単純な配列からネストされたオブジェクトを作成する
- javascriptでmap、reduce、filterを使用してネストされた配列から出力します
- ネストされた配列:&&演算子を適切に使用して、いくつかのループをスキップする方法は?
- ネストされた配列を持つ要素を含む配列をフィルタリングするにはどうすればよいですか?
- purrr map_dfは、新しいネストされたデータフレーム列を出力します
- ネストされた配列の要素を減らす
- ネストされた配列を更新していますが、間違った要素が更新されます
- 配列mapから[オブジェクトオブジェクト]を出力します
Rubyには、配列、ハッシュ、および両方のネストされた混合物を理解するのに役立つツールがいくつか用意されています。
データが次のようになっていると仮定します(
GOOG
の周りに引用符を追加しました およびFB
):each
を使用して配列を反復処理できます 、例えば:ハッシュを掘り下げて結果を出力するには、いくつかの方法があります。
方法#1は
hash[key]
を使用します 構文、および最初のハッシュ値が別のハッシュであるため、目的の結果を得るために連鎖できます。このアプローチの欠点は、不足しているproperties
がある場合 キーを押すと、エラーが発生します。方法#2は
ハッシュから要素を削除するdig
を使用します 、ネストされたキーを引数として(順番に)受け入れます。ネストされたハッシュを掘り下げて値を引き出しますが、ステップが欠落している場合はnil
を返します 、外部ソースからのデータを処理している場合は少し安全です2番目の質問はもう少し複雑です。次の2つのオプションがあります。
primary_role
を削除する ネストされたハッシュのキー、またはprimary_role
を除くすべてのデータを含む新しいオブジェクトを作成します キー。私は通常後者を選び、不変性と不変のデータ構造を読むことをお勧めします。
ただし、[1]を達成するには、インプレースの
ハッシュに要素を追加するdelete
を実行できます。 キーの:単に
hash[key] = value
で新しいハッシュ値を割り当てます ので、次のようなもので業界を設定できます。次のようになります: