Ruby按标准搜索哈希

use*_*647 1 ruby hash

如何将数组哈希与单个哈希进行比较,并返回包含比较结果的新哈希数组.

例如:

stored_hash  = [
    {:a => 1, :b => 2, :c => 3},
    {:a => 1, :b => 3, :c => 4}
]
compare_hash = {:a => 1}
stored_hash.some_function_here(compare_hash)
Run Code Online (Sandbox Code Playgroud)

应该返回:

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

这个:

stored_hash  = [
    {:a => 1, :b => 2, :c => 3},
    {:a => 1, :b => 3, :c => 4}
]
compare_hash = {:a => 1, :b => 3}
stored_hash.some_function_here(compare_hash)
Run Code Online (Sandbox Code Playgroud)

应该返回:

[
   {:a => 1, :b => 3, :c => 4}
]
Run Code Online (Sandbox Code Playgroud)

Yu *_*Hao 5

这是一种方式,使用Array#keep_ifHash#merge

stored_hash.keep_if {|hash| hash.merge(compare_hash) == hash}
Run Code Online (Sandbox Code Playgroud)