检查哈希是否包含另一个哈希

Ste*_*eve 2 ruby hash ruby-1.9

鉴于我有一个哈希数组abc和一个哈希ghi:

abc = [{
  'a' => '1',
  'b' => '2',
  'c' => '3',
  'd' => '4'
}]
ghi = {
  'a' => '1',
  'b' => '2'
}
Run Code Online (Sandbox Code Playgroud)

选择散列的最干净,最有效的方法是什么?abc包含所有键值对ghi

我能够做到这一点:

abc.map {|n| n.slice(*ghi.keys) == ghi }.all?
Run Code Online (Sandbox Code Playgroud)

虽然它看起来不是很干净.

saw*_*awa 8

在Ruby 2.3中.

abc.select{|h| h >= ghi}
Run Code Online (Sandbox Code Playgroud)

注意:在OP提到Ruby版本之前已经回答了这个问题.

Ruby的早期版本:

abc.select{|h| h.merge(ghi) == h}
Run Code Online (Sandbox Code Playgroud)

  • 我只想说你错了h和ghi :)但是我要告诉我,我很欣赏你的Ruby答案有多酷,真的 - 简短,准确和高效(即使我不确定,但你最有可能的). (2认同)