Ruby访问数组元素

Tri*_*eil 7 ruby

我有一个看起来像这样的数组.

[{"EntryId"=>"2", "Field1"=>"National Life Group","DateCreated"=>"2010-07-30 11:00:14", "CreatedBy"=>"tristanoneil"},
 {"EntryId"=>"3", "Field1"=>"Barton Golf Club", "DateCreated"=>"2010-07-30 11:11:20", "CreatedBy"=>"public"},
 {"EntryId"=>"4", "Field1"=>"PP&D Brochure Distribution", "DateCreated"=>"2010-07-30 11:11:20", "CreatedBy"=>"public"}, 
 {"EntryId"=>"5", "Field1"=>"Prime Renovation Group, DreamMaker Bath & Kitchen",  "DateCreated"=>"2010-07-30 11:11:21", "CreatedBy"=>"public"}
]
Run Code Online (Sandbox Code Playgroud)

我将如何迭代遍历此数组,以便我可以指定要打印的字段并获取值,因此我可以执行类似的操作.

puts EntryId.value
Run Code Online (Sandbox Code Playgroud)

EmF*_*mFi 7

它看起来几乎就像是一个哈希数组.假设它存储在一个变量中,如下所示:

data = [{"EntryId"=>"2", "Field1"=>"National Life Group"},
        {"EntryId"=>"3", "Field1"=>"Barton Golf Club"},
        {"EntryId"=>"4", "Field1"=>"PP&D Brochure Distribution"}
       ]
Run Code Online (Sandbox Code Playgroud)

可以使用方括号中的索引访问Array的单个元素.可以使用方括号中的键访问哈希值.例如,要获取您将使用的第二个数组元素的"Field1"的值:

data[1]["Field1"]
Run Code Online (Sandbox Code Playgroud)

您可以使用Enum mixin中定义的方法轻松遍历数组.

如果要处理数组,可以使用每个数组:此代码将打印数组中每个元素的Entry Id的值.

data.each{|entry| puts entry["EntryId"]}
Run Code Online (Sandbox Code Playgroud)

此数据不需要存储在变量中即可工作.您可以使用以下方法直接访问匿名数组:

例如,这将返回一个字符串数组.其中每个元素是返回数组的元素是原始数组中相应元素的格式变体.

[{"EntryId"=>"2", "Field1"=>"National Life Group"},
 {"EntryId"=>"3", "Field1"=>"Barton Golf Club"},
 {"EntryId"=>"4", "Field1"=>"PP&D Brochure Distribution"}
].map{|e| "EntryId: #{e["EntryId"]}\t Company Name: #{e["Field1"]}"}
Run Code Online (Sandbox Code Playgroud)


Rap*_*met 7

花括号和hashrockets(=>)的存在意味着你正在处理Ruby哈希,而不是数组.

幸运的是,检索与任何一个键(hashrocket左边的东西)相关联的值(hashrocket右边的东西)是一块带有Hashes的小菜一碟:你所要做的就是使用[]操作符.

entry = { "EntryId" => "2", "Field1" => "National Life Group", ... }
entry["EntryId"] # returns "2"
Run Code Online (Sandbox Code Playgroud)

以下是Hash的文档:http://ruby-doc.org/core/classes/Hash.html