Ruby - 散列到数组

时间:2016-06-01 12:44:12

标签: ruby

我有:

a =  [{"_id"=>BSON::ObjectId('569a58b8e301d083c300000c')}]

我希望它是:

[BSON::ObjectId('569a58bee301d083c3000752')]

我正在尝试

a.map{|e| e.map{|k, v| v }}

但它给了我嵌套数组:

[[BSON::ObjectId('569a58b8e301d083c300000c')]]

我会感激任何帮助。

3 个答案:

答案 0 :(得分:3)

如果你只是哈希:

capture: { type: Schema.Types.ObjectId, ref: 'Capture'}

并且您想要抓取h = {"_id"=>BSON::ObjectId('569a58b8e301d083c300000c')} ,您可以致电BSON::ObectId

Hash#[]

同样适用于h["_id"] #=> BSON::ObjectId('569a58b8e301d083c300000c')

map

答案 1 :(得分:0)

更清洁的解决方案。

a = [{"id"=>"1234"},{"id"=>"9876"}]
a.flat_map(&:values)
=> ["1234", "9876"]

答案 2 :(得分:0)

我会使用值,然后调用flatten。

a.collect(:&values).flatten

或者,如果只有一个值

a[0].values[0]