Подтвердить что ты не робот

Есть ли чистый способ доступа к хеш-значениям в массиве хэшей?

В этом коде:

arr = [ { id: 1, body: 'foo'}, { id: 2, body: 'bar' }, { id: 3, body: 'foobar' }]
arr.map { |h| h[:id] } # => [1, 2, 3]

Есть ли более чистый способ получить значения из массива хешей, подобных этому?

Underscore.js скрутил, мне интересно, есть ли эквивалент Ruby.

4b9b3361

Ответ 1

Если вы не возражаете против обезглавливания обезьян, вы можете уйти от себя:

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, а кто-то еще для более общего решения.