Ruby 是否有类似于 Lodash 中的 pluck(arr, key) 的功能?

Does Ruby have a similar function to pluck(arr, key) in Lodash?

给定一个非常大的 array/hash,例如,用户:

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

如果你应用 Lodash 的 pluck 函数*:

_.pluck(users, 'user');

你得到这个结果:

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

Ruby是否有类似方便的功能,只获取array/hash的某个键而不迭代它?我知道 Rails 有一个名为 pluck 的函数,但它是用于 ActiveRecords 的。关于如何在数组上完成此操作有什么建议吗?

*pluck 显然是 因为写了这个问题

您似乎想要 #map,它获取数组的每个元素并将其替换为块的结果。

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

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

我认为标准库中没有 on,但是用一个块很容易实现:

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

P.S.: 由于您使用了冒号样式的散列,因此散列中的每个键都是一个符号,必须作为元素[:].

访问