2016-01-03 50 views
2

給出一個真正的大數組/哈希,例如用戶:Ruby是否具有類似於Lodash中的pluck(arr,key)的函數?

users = [ 
    { 'user': 'barney', 'age': 36 }, 
    { 'user': 'jeff', 'age': 32 }, 
    ... 
    { 'user': 'fred', 'age': 40 } 
]; 

如果你申請Lodash的pluck功能*:

_.pluck(users, 'user'); 

你得到這樣的結果:

-> ['barney', 'jeff', ..., 'fred'] 

不Ruby有一個類似的方便函數,它只會獲得數組/散列的某個鍵而不會迭代它?我知道Rails有一個叫做pluck的函數,但它是用於ActiveRecords的。有關如何在數組上完成此任務的任何建議?

* pluck顯然replaced by map因爲這個問題被寫

+0

我知道我已經回答了,但實際上並不清楚你問的是什麼語言。標題讓我相信Ruby,但代碼示例看起來像JavaScript。 – acsmith

+0

是的,即時通訊詢問Ruby,但這個例子是從JS中拿出來的,在JS中有一個例子,以便清楚我想要在Ruby中擁有什麼 –

回答

3

我不認爲這是在標準庫,但它很容易與塊來實現:

users.map { |element| element[:user] } 

PS:因爲你使用冒號風格哈希,每個按鍵在你的哈希是一個符號,並且必須作爲元素[:]訪問。

2

好像你想#map,這需要一個數組中的每個元素,並用塊的結果替換它。

users = [ 
    { 'user': 'barney', 'age': 36 }, 
    { 'user': 'jeff', 'age': 32 }, 
    ... 
    { 'user': 'fred', 'age': 40 } 
] 

users.map {|u| u['user'] } # => ['barney', 'jeff', ..., 'fred'] 
相關問題