Ruby在Lodash中有类似的功能吗(arr,key)吗?

时间:2016-01-03 02:01:02

标签: ruby sinatra lodash

给定一个非常大的数组/哈希,例如,用户:

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,因为这个问题是写的

2 个答案:

答案 0 :(得分:4)

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

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

P.S。:因为你使用了冒号样式哈希,哈希中的每个键都是一个符号,必须作为元素[:]访问。

答案 1 :(得分:2)

好像你想要#map,它接受​​一个数组的每个元素并用一个块的结果替换它。

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

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