查找哈希数组的键

Finding keys of an array of hash

我有一个哈希数组,数组中的键不同:

csv = [{:fruit=>"apple", :number=>23},{:age=>12,:name=>"XYZ"}]

我如何获得所有这样的密钥:

[:fruit,:number,:age,:name]

我试过了

array = csv.collect {|key,value| key }

尝试使用 flat_map with keys:

csv.flat_map { |a| a.keys }
# => [:fruit, :number, :age, :name]

如果某些键有多个实例,并且您希望每个键只拥有一次,您还应该添加 uniq:

csv = [{:fruit=>"apple", :number=>23},{:age=>12,:name=>"XYZ", :number=>11}]
array = csv.flat_map { |a| a.keys }
# => [:fruit, :number, :age, :name, :number]
array.uniq
# => [:fruit, :number, :age, :name]

没有括号或管道:

csv.flat_map(&:keys).uniq

或:

csv.map(&:keys).flatten.uniq
csv.reduce(&:merge).keys
  #=> [:fruit, :number, :age, :name]

随便说说