代码之家  ›  专栏  ›  技术社区  ›  ankur

在哈希[重复]中查找缺少的键

  •  0
  • ankur  · 技术社区  · 7 年前

    我陷入了一种需要在散列中找到丢失的键的情况。但问题是钥匙不一定是某些钥匙中的任何一把。

    例如

     {"from"=>"abc@gmail.com", "to"=>"def@gmail.com:ijk@gmail.com:lmn@gmail.com", "subject"=>"hi", "body"=>"there", "cc" => "def@gmail.com:ijk@gmail.com", "bcc" => "def@gmail.com:ijk@gmail.com"}
    

    缺少的键可以是from、subject、to、body,但不能是cc和bcc。因此,我需要找出散列中缺少哪些密钥,以便将特定密钥返回给用户。我无法在模型级别执行此操作 This solution 此链接中提供的内容没有帮助,因为它只会返回true或false。取而代之的是,我需要散列中不存在的缺失密钥

    1 回复  |  直到 7 年前
        1
  •  3
  •   Aleksei Matiushkin    7 年前

    您可以使用 Hash#keys 方法

    REQUIRED_KEYS = %w(from subject to body)
    hash = {
      "from"=>"abc@gmail.com", 
      "to"=>"def@gmail.com:ijk@gmail.com:lmn@gmail.com", 
      "subject"=>"hi", 
      "body"=>"there", 
      "cc" => "def@gmail.com:ijk@gmail.com", 
      "bcc" => "def@gmail.com:ijk@gmail.com"
    }
    
    REQUIRED_KEYS - hash.keys
    #=> []
    
    hash.delete('to')
    #=> "def@gmail.com:ijk@gmail.com:lmn@gmail.com"
    
    REQUIRED_KEYS - hash.keys
    #=> ["to"]