簡體   English   中英

從另一個哈希創建哈希

[英]Creating a hash from another hash

我目前正在處理包含常見值的兩個不同的哈希,我想規范化哈希鍵名稱。

哈希#1看起來像:

files = [{ "filename" => "file.txt","path" => "/folder/file.txt" }]

Hash#2看起來像:

files = [{ "file" => "file.txt", "dir" => "/folder/file.txt" }]

有沒有辦法循環哈希#2並創建一個新的哈希,所以鍵是“文件名”和“路徑”而不是“文件”和“目錄”?

只需用新密鑰替換您的密鑰:

files["path"] = files.delete("dir")

delete返回值刪除,所以你有效地運動什么,在files['dir']files['path']

Ruby中沒有神奇的方法來為你的兩個數組自動化這個過程; 你必須遍歷第一個,在第二個中找到值,然后執行上面的delete操作:

files1.each do |key,value|
  if old_key = files2.key(value)
    files2[key] = files2.delete(old_key)
  end
end

如果已在第二個數組中獲取了鍵,則可能會覆蓋值。 如果你確定files1中的每個值也在files2 ,你可以跳過if語句,只需在循環中使用files2[key] = files2.delete(files2.find(value))

試試這個:

files1.concat(files2.map { |old_hash| 
    { 
        "filename" => old_hash["file"], 
        "path" => old_hash["dir"]
    }
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM