在这段代码中:
arr = [ { id: 1, body: 'foo'}, { id: 2, body: 'bar' }, { id: 3, body: 'foobar' }]
arr.map { |h| h[:id] } # => [1, 2, 3]
有没有一种更简洁的方法可以从这样的哈希数组中获取值?
Underscore.js 有 pluck,我想知道是否有 Ruby 等价物。
在这段代码中:
arr = [ { id: 1, body: 'foo'}, { id: 2, body: 'bar' }, { id: 3, body: 'foobar' }]
arr.map { |h| h[:id] } # => [1, 2, 3]
有没有一种更简洁的方法可以从这样的哈希数组中获取值?
Underscore.js 有 pluck,我想知道是否有 Ruby 等价物。
如果你不介意猴子补丁,你可以自己去采摘:
arr = [{ id: 1, body: 'foo'}, { id: 2, body: 'bar' }, { id: 3, body: 'foobar' }]
class Array
def pluck(key)
map { |h| h[key] }
end
end
arr.pluck(:id)
=> [1, 2, 3]
arr.pluck(:body)
=> ["foo", "bar", "foobar"]
此外,看起来有人已经为 Enumerables 推广了这一点,而其他人则为更通用的解决方案推广了这一点。
现在导轨支持Array.pluck
开箱即用。这个PR已经实现了
它被实现为:
def pluck(key)
map { |element| element[key] }
end
所以没有必要再定义它了:)