【问题标题】:Does Ruby have a similar function to pluck(arr, key) in Lodash?Ruby 是否具有与 Lodash 中的 pluck(arr, key) 类似的功能?
【发布时间】:2016-04-06 23:21:22
【问题描述】:

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

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

【问题讨论】:

  • 我知道我已经回答过了,但实际上并不清楚你问的是什么语言。标题让我相信 Ruby,但代码示例看起来像 javascript。
  • 是的,我问的是 Ruby,但是这个例子是从 JS 中获取的,在 JS 中有一个例子,以便清楚我想要在 Ruby 中拥有什么

标签: ruby sinatra lodash


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    我认为标准库中没有on,但是用块很容易做到这一点:

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

    P.S.:由于您使用了冒号样式的哈希,因此哈希中的每个键都是一个符号,并且必须作为 element[:] 访问。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-04
      • 1970-01-01
      • 2016-10-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多