ruby-on-rails - 如何返回包含每个所有者名称的文件名数组的哈希?
问题描述
有一个名为“files”的哈希,如下所示:
files = {
'file1.txt' => 'John',
'file2.rb' => 'Andrew',
'file3.txt' => 'John'
}
预期结果:
将此哈希作为参数并返回包含相应所有者的文件数组的哈希的方法。例如
{
'John' => ['file1.txt','file3.txt'],
'Andrew' => ['file2.rb']
}
解决方案
在这里,您要遍历文件哈希,并且对于每个键值对,您需要检查它是否已存在于新哈希中,然后您只想将文件名添加到数组中,或者创建一个新的键值对。
def change_hash(file_hash)
new_hash = {}
file_hash.each do |file_name, person|
if new_hash[person]
new_hash[person] << file_name
else
new_hash[person] = [file_name]
end
end
new_hash
end
如果您对此感到困惑,您想了解如何在 Ruby 中操作散列(和数组)。如果您还有其他问题,请告诉我。
推荐阅读
- javascript - 未捕获的 TypeError:document.getElementById(...).submit 不是 HTMLDocument 中的函数。
- python - 如果返回值不是布尔值,则退出 If 语句
- vhdl - 复杂的 if 语句不可模拟
- delphi - LowLevelKeyboardProc() 永远不会被执行
- javascript - XLSX JS 根据单元格地址获取列标题
- windows - 如何在 CMake 中找到由 vcpkg 安装的 GTK
- c# - D3DKMTQueryAdapterInfo AdapterPerfData noMemory 错误
- excel - 如何格式化图表组中所有图表中的字体
- bash - Bash,从带有参数的嵌套函数返回结果(1/0 错误/正常)
- r - 如何从文本文件列表中提取向量