0

いろいろ調べましたが、今のところ困っています。配列を単純化することを検討しているので、操作が少し簡単になります...

現在、私の配列は次のようになっています。

[[{"title"=>"Test Entry 2", "date"=>"2013-11-01 21:05"}, "\nThis is just another test entry."], [{"title"=>"Test Entry", "date"=>"2013-11-01 18:05"}, "\nThis is just a test entry."]]

そして、私が現在持っているこれらの値を印刷するには:

entries.each do |x|
  puts x[0]["title"]
  puts x[0]["date"]
  puts x[1]
end

私はそれがこのように見えることを望みます(私は思う):

[{"title"=>"Test Entry 2", "date"=>"2013-11-01 21:05", "content"=>"\nThis is just another test entry".}], [{"title"=>"Test Entry", "date"=>"2013-11-01 18:05", "content"="\nThis is just a test entry.}]

次のようなループでこれらの値を簡単に呼び出せるようにしたいと考えています。

entries.each do |entry|
  puts entry["title"]
  puts entry["date"]
  puts entry["content"]
end

どんな助けでも大歓迎です。見てくれてありがとう!!

4

2 に答える 2

0

どうですか

a = [[{"title"=>"Test Entry 2", "date"=>"2013-11-01 21:05"}, "\nThis is just another test entry."], [{"title"=>"Test Entry", "date"=>"2013-11-01 18:05"}, "\nThis is just a test entry."]]

a.map! {|hsh, content| hsh['content'] = content; hsh }

#=> [{"title"=>"Test Entry 2", "date"=>"2013-11-01 21:05", "content"=>"\nThis is just another test entry."}, {"title"=>"Test Entry", "date"=>"2013-11-01 18:05", "content"=>"\nThis is just a test entry."}]

これは、mapブロックが配列のインデックス順に割り当てられた複数の引数を取ることができるために機能します。そのため、配列をmap反復処理して、a各ハッシュとコンテンツ文字列を引き出します。次に、コンテンツ文字列をハッシュの新しいメンバーに割り当て、contentハッシュを返します。

于 2013-11-06T00:04:13.437 に答える
0

あなたはすでにそれをしました。小さな間違いを修正した後、次のようになります

entries=[
  {"title"=>"Test Entry 2", "date"=>"2013-11-01 21:05", "content"=>"\nThis is just another test entry."},
  {"title"=>"Test Entry", "date"=>"2013-11-01 18:05", "content"=>"\nThis is just a test entry."}
]

entries.each do |entry|
  puts entry["title"] # Test Entry 2
  puts entry["date"]  # 2013-11-01 21:05
  puts entry["content"] # 
                        # This is just another test entry.
end

単なるハッシュの配列。式で値を表示することもできますentry.keys.each {|k| puts entry[k]}

于 2013-11-06T00:24:12.483 に答える