迭代到ruby中多维数组的每个元素

时间:2014-04-30 07:41:06

标签: ruby-on-rails ruby arrays xml-parsing

我有一个数组,我通过一个xml。我希望迭代每个元素到数组,这是哈希并使用键获取每个哈希元素值。 我想要像这样>>

阵列>>

education_split = [{"University"=>"Institute Of Engineering And Emerging Technologies", "Degree"=>"MBA", "Year"=>"2007"}, {"University"=>"H.N.B. Garhwal University", "Degree"=>"MSC", "Year"=>"2005"}, {"University"=>"H.P. University", "Degree"=>"Med", "Year"=>"2003"}, {"University"=>nil, "Degree"=>"12th", "Year"=>"1999"}, {"University"=>nil, "Degree"=>"10th", "Year"=>nil}] 

现在我想迭代到数组的每个元素,并在迭代中获得大学,学位,年份的值。类似的东西..

 education_split.each do |edu|
     //here are some other things also like creating object
      edu["University"] 
      edu ["Degree"] 
      edu["Year"]
   end    

这也有效但在某些情况下它是错误>> TypeError(没有将String隐式转换为Integer)

这里所有字段都是字符串,我得到的值也是字符串。

1 个答案:

答案 0 :(得分:1)

只需检查哈希:

education_split.each do |edu|
     //here are some other things also like creating object
  if edu.is_a? Hash
      edu["University"] 
      edu ["Degree"] 
      edu["Year"]
  end
end  

阅读错误,我确信您的收藏集education_split还包含数组 哈希。现在为了防止错误,并且您只想对代码的那部分进行哈希,只需在任何特定迭代中检查edu是否为哈希。如果 hash ,请执行操作或跳过它。

TypeError(没有将String隐式转换为整数)只有当你尝试使用 strings 而不是整数来获取数组元素时才会出现 >。与a = [1, 2]类似,现在执行a['x'],并且看到您将收到您正在获得的确切错误。