在哈希中查找丢失的键
Find missing key in hash
我遇到了需要在散列中找到丢失的键的情况。但问题是 key 不确定它可以是某些键中的任何键。
例如
{"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"}
缺少的键可以是发件人、主题、收件人、正文,但不能是抄送和密件抄送。因此,我需要找出散列中缺少哪些键,以便 return 向用户提供特定键。我无法在模型级别执行此操作
此 link 中提供的 This solution 没有帮助,因为它只是 return 告诉我是真是假。取而代之的是,我需要散列中不存在的缺失键
您可以使用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"]
我遇到了需要在散列中找到丢失的键的情况。但问题是 key 不确定它可以是某些键中的任何键。
例如
{"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"}
缺少的键可以是发件人、主题、收件人、正文,但不能是抄送和密件抄送。因此,我需要找出散列中缺少哪些键,以便 return 向用户提供特定键。我无法在模型级别执行此操作 此 link 中提供的 This solution 没有帮助,因为它只是 return 告诉我是真是假。取而代之的是,我需要散列中不存在的缺失键
您可以使用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"]