在ruby中的数组中打印哈希?

时间:2015-03-26 01:15:45

标签: ruby arrays multidimensional-array hash

如果我有一个内部有哈希的数组,我该如何只打印哈希键值对?

  complex_array= [ 1,2, 3, "string", 
               {"app1"=>"123 happy street",
                "app2"=>"daf 3 street", 
                "app3"=>"random street"}, "random", {"another"=>"hash"}
               ]

我正在尝试:

complex_array.select{|x|
 puts x["app1"];
 }

不起作用,因为对于数组,您需要一个索引参数(没有字符串转换为整数错误)

那么我怎么只打印哈希值而不先在数组中指定哈希的索引,或者这是唯一的方法呢?

2 个答案:

答案 0 :(得分:3)

您可以循环遍历数组的每个元素,并确定该元素的类是否为哈希。如果是,则放置该哈希元素的键值对。如果有多个键值对,则需要进行第二次循环。

 complex_array.each do |element|
   if element.class == Hash
     element.each do |key, value|
       puts "key: #{key}, value: #{value}"
     end
   end
 end

答案 1 :(得分:1)

只需选择哈希元素,然后为每个哈希打印键值对:

complex_array.select { |e| e.is_a? Hash }
             .each { |h| h.each { |k,v| puts "#{k}=>#{v}" } }
  # app1=>123 happy street
  # app2=>daf 3 street
  # app3=>random street
  # another=>hash