【问题标题】:Combine hash and array data结合散列和数组数据
【发布时间】:2017-10-25 07:29:17
【问题描述】:

我有一个需要组合的数组和散列。请告诉我最简单的方法。

array1 = [:user_id, :project_id, :task_id]

entry_hash = {"User"=>1, "Project"=>[8], "Task"=>[87]}

当它被组合时,我想要一个像这样的哈希

输出 = {"user_id"=>1, "project_id"=>8, "task_id"=>87}

感谢您的帮助!

【问题讨论】:

    标签: ruby-on-rails-4


    【解决方案1】:

    我有点不清楚你想在这里实现什么。查看您的示例,最简单的解决方案是使用.downcase 更改entry_hash 的键并添加_id。对于值,您可以检查它是否为数组,如果是,则使用第一个值。

    output = {}
    
    entry_hash.each do |key, value|
      output[key.downcase + '_id'] = value.kind_of?(Array) ? value[0] : value
    end
    

    这当然假设哈希中的键是数组中列名的名词。如果名称更复杂(例如CamelCaseNamesnake_case_id),上面的代码将不起作用。 Rails 带有 ActiveSupport 可以帮助你,但这是一个完全不同的问题:Converting camel case to underscore case in ruby

    如果数组和哈希不共享相同的名称,则没有简单的方法可以自动执行此操作。哈希不保证其元素的顺序,因此像上面的 sn-p 那样遍历两者并映射值将无法可靠地工作。

    【讨论】:

      猜你喜欢
      • 2014-11-22
      • 1970-01-01
      • 2015-02-03
      • 2019-05-25
      • 2012-08-03
      • 2011-07-26
      • 1970-01-01
      • 2015-09-18
      • 2020-02-21
      相关资源
      最近更新 更多