如何比较两个填充哈希的数组并返回第二个不存在的哈希?

nar*_*ero 0 ruby arrays hash compare

假设我有两个充满哈希的数组,

array_a = [{'key' => 'a'}, {'key' => 'b'}, {'key' => 'c'}, {'key' => 'd'}]
array_b = [{'key' => 'a'}, {'key' => 'b'}, {'key' => 'd'}]
Run Code Online (Sandbox Code Playgroud)

我如何比较array_aarray_b返回未找到的哈希值array_b.

所以比较应该返回:

# => [{'key' => 'c'}]
Run Code Online (Sandbox Code Playgroud)

Ste*_*fan 6

Array#- 会工作:

array_a = [{'key' => 'a'}, {'key' => 'b'}, {'key' => 'c'}, {'key' => 'd'}]
array_b = [{'key' => 'a'}, {'key' => 'b'}, {'key' => 'd'}]

array_a - array_b
#=> [{"key"=>"c"}]
Run Code Online (Sandbox Code Playgroud)

方法"......使用它们hasheql?方法比较元素......"并根据Hash#hash:

具有相同内容的两个哈希将具有相同的哈希码(并将使用比较eql?).