加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 从另一个哈希创建哈希

发布时间:2020-12-17 02:44:29 所属栏目:百科 来源:网络整理
导读:我目前正在处理包含常见值的两个不同的哈希,我想规范化哈希键名称. 哈希#1看起来像: files = [{ "filename" = "file.txt","path" = "/folder/file.txt" }] Hash#2看起来像: files = [{ "file" = "file.txt","dir" = "/folder/file.txt" }] 有没有办法循环
我目前正在处理包含常见值的两个不同的哈希,我想规范化哈希键名称.

哈希#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返回已删除的值,因此您可以有效地将文件[‘dir’]中的内容移动到文件[‘path’].

Ruby中没有神奇的方法来为你的两个数组自动化这个过程;你必须遍历第一个,在第二个中找到值,然后执行上面的删除操作:

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)).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读