无法在任何地方找到此特定实例;我可能会遗漏一些简单的东西,但在这里。
说我有一个数组:
["Field1", "Field2"]
我需要将其转换为哈希数组,因此(FieldType键/值是默认值)
[{"Name"=>"Field1", "FieldType"=>"Text"},
{"Name"=>"Field2", "FieldType"=>"Text"}]
我该怎么做呢?以下显然不起作用:
fields.each do |field|
fieldResults << {"Name" => field, "FieldType" => "Text"}
end
答案 0 :(得分:8)
假设fieldResults
是一个数组,你写的内容应该有效,尽管使用更合适的函数更加惯用,比如map
。
fields.map {|field| { 'Name' => field, 'FieldType' => 'Text' }}
答案 1 :(得分:1)
如果fields = ["Field1", "Field2"]
和 fieldResults已初始化为[]
,则您的代码应该有效。但正如查克所说,fieldResults = fields.map {|field| { 'Name' => field, 'FieldType' => 'Text' }}
更具有意识形态。
顺便说一下:符号,方法和变量的ruby命名约定是使用snake_case(下划线)而不是camelCase用于多个单词名称。与field_results
代替fieldResults
答案 2 :(得分:0)
你也可以采取以下方法:
fields = ["Field1", "Field2"]
result = fields.map{|i| {"Name" => i}.update({"FieldType" => "Text"})}
# => [{"Name"=>"Field1", "FieldType"=>"Text"},
# {"Name"=>"Field2", "FieldType"=>"Text"}]
答案 3 :(得分: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"}]