1

この特定のインスタンスはどこにも見つかりませんでした。簡単なものが欠けているかもしれませんが、これで終わりです。

配列があるとします:

["Field1", "Field2"]

これをハッシュの配列に変換する必要があります (FieldType キー/値はデフォルト値です)。

[{"Name"=>"Field1", "FieldType"=>"Text"}, 
 {"Name"=>"Field2", "FieldType"=>"Text"}]

どうすればこれを行うことができますか?以下は明らかに機能しません。

fields.each do |field|
  fieldResults << {"Name" => field, "FieldType" => "Text"}
end
4

4 に答える 4

9

が配列であると仮定するfieldResultsと、あなたが書いたものは機能するはずですが、map.

fields.map {|field| { 'Name' => field, 'FieldType' => 'Text' }}
于 2013-07-07T18:11:38.967 に答える
1

fieldResults がコードに初期化されている場合はfields = ["Field1", "Field2"]、機能するはずです。しかし、チャックが言ったように、より観念的です。[]fieldResults = fields.map {|field| { 'Name' => field, 'FieldType' => 'Text' }}

ちなみに、シンボル、メソッド、変数のルビ命名規則は、複数の単語名にキャメルケースではなく、スネークケース (アンダースコア) を使用することです。field_results代わりに好きfieldResults

于 2013-07-07T18:27:32.553 に答える
0

以下のアプローチも取ることができます:

fields = ["Field1", "Field2"]
result = fields.map{|i| {"Name" => i}.update({"FieldType" => "Text"})}
# => [{"Name"=>"Field1", "FieldType"=>"Text"},
#     {"Name"=>"Field2", "FieldType"=>"Text"}]
于 2013-07-07T18:20:45.140 に答える
0

これを行う別の方法。

fieldResults = []
["Field1", "Field2"].each{|e| fieldResults << Hash["Name",e,"FieldType","Text"]}
1.9.3 (main):0 > fieldResults
 => [{"Name"=>"Field1", "FieldType"=>"Text"},
    {"Name"=>"Field2", "FieldType"=>"Text"}]
于 2013-07-08T06:58:50.853 に答える