5

したがって、通常のハッシュでは、これを使用してキーを取得できます。

hash.keys

次のような多次元ハッシュの2次元のキーを取得するにはどうすればよいですか?

{"<id>"=>{"first_name"=>"test", "last_name"=>"test_l", "username"=>"test_user", 
"title"=>"Sales Manager", "office"=>"test", "email"=>"test@test.com"}}

<id>アイテムごとに一意です。

したがって、上から必要なキーは次のとおりです。first_name, last_name, username, title, office and email

4

4 に答える 4

4

あなたは次のようなことをします:

hash["<id>"].keys
于 2013-02-25T22:38:24.620 に答える
3

以下は、第 2 レベルのハッシュで使用されるすべてのキーを取得します。uniq重複しないように使用しています。

hash.collect { |k, v| v.keys }.flatten.uniq
于 2013-02-25T22:40:03.843 に答える
2

それぞれが「first_name」、「last_name」などのキーを含むネストされたハッシュを指すベースハッシュにいくつかの一意の「id」キーがあることを意味していると思います。そうだとすれば:

hash.values.map(&:keys)

ネストされた各ハッシュのキーを含む配列の配列を返します。

一方、キーと値のペアが1つしかない場合(例のように)、次のことができます

hash.values.first.keys

これは、ネストされた唯一のハッシュ内のキーに対応するキーのフラットな配列を返します。

于 2013-02-26T07:12:23.160 に答える
2

1つの値を持つ1つの不明なキーを持つハッシュがあると仮定します:ハッシュ。

h = {"<id>"=>{"first_name"=>"test", "last_name"=>"test_l", "username"=>"test_user", 
"title"=>"Sales Manager", "office"=>"test", "email"=>"test@test.com"}}

p h[h.keys.first].keys
#=> ["first_name", "last_name", "username", "title", "office", "email"]

(しかし、このような構造を見るたびに、なぜそれが構造体ではないのか疑問に思います)。

于 2013-02-25T22:58:01.697 に答える