我有一个我需要组合的数组和哈希。请让我知道最简单的方法。
array1 = [:user_id,:project_id,:task_id]
entry_hash = {“User”=> 1,“Project”=> [8],“任务”=> [87]}
当它合并时,我想要像
这样的哈希output = {“user_id”=> 1,“project_id”=> 8,“task_id”=> 87}
感谢您的帮助!
答案 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
这当然假设散列中的键是数组中列名的名词。如果名称更复杂(例如CamelCaseName
或snake_case_id
),则上述代码将无效。 Rails附带ActiveSupport可以帮助你,但这是一个完全不同的问题:Converting camel case to underscore case in ruby
如果数组和哈希不共享相同的名称,则没有简单的方法可以自动执行此操作。哈希不保证其元素的顺序,因此迭代两者并映射上述代码段中的值将无法可靠地工作。