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.: 由于您使用了冒号样式的散列,因此散列中的每个键都是一个符号,必须作为元素[:].
访问
给定一个非常大的 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.: 由于您使用了冒号样式的散列,因此散列中的每个键都是一个符号,必须作为元素[:].
访问