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

如果fields = ["Field1", "Field2"]fieldResults 被初始化为[]您的代码应该可以工作。但正如查克所说fieldResults = fields.map {|field| { 'Name' => field, 'FieldType' => 'Text' }},更具意识形态性。

顺便说一句:符号、方法和变量的 ruby​​ 命名约定是使用snake_case(下划线)而不是camelCase 来命名多个单词。喜欢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 回答