【问题标题】:possible to do this as a one-liner in Ruby or Rails [duplicate]可以在 Ruby 或 Rails 中作为单行来执行此操作 [重复]
【发布时间】:2019-04-16 19:26:46
【问题描述】:

我有一个 Rails 应用程序,它执行大量 JSON 解析(即使用字符串作为键而不是符号)。

我有以下代码:

ad_source_ids = []
logged_one['migrated'].each { |mig| ad_source_ids << mig['id'] }

我想做

ad_source_ids = logged_one['migrated'].map(&:id)

但我认为我做不到。什么是替代方案?我想删除 ad_source_ids tmp 变量。

【问题讨论】:

  • 一种方法是ad_source_ids = logged_one['migrated'].map {|mig| mig['id'] }
  • 顺便说一句,您可以使用JSON.parse(some_json_str, symbolize_names: true) 来获取符号而不是字符串作为键。来源:apidock.com/ruby/JSON/parse

标签: ruby-on-rails ruby


【解决方案1】:

你快到了。试试这个:

ad_source_ids = logged_one['migrated'].collect { |mig| mig['id'] }

【讨论】:

  • 值得注意的是,collectmap 的别名,而且(有趣的是)大多数 Ruby 开发人员更喜欢后者。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-29
  • 1970-01-01
相关资源
最近更新 更多