合并散列和数组数据

时间:2017-05-24 19:35:21

标签: ruby-on-rails-4

我有一个我需要组合的数组和哈希。请让我知道最简单的方法。

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

entry_hash = {“User”=> 1,“Project”=> [8],“任务”=> [87]}

当它合并时,我想要像

这样的哈希

output = {“user_id”=> 1,“project_id”=> 8,“task_id”=> 87}

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我有点不清楚你想在这里实现什么。查看您的示例,最简单的解决方案是使用entry_hash更改.downcase的密钥并添加_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

如果数组和哈希不共享相同的名称,则没有简单的方法可以自动执行此操作。哈希不保证其元素的顺序,因此迭代两者并映射上述代码段中的值将无法可靠地工作。