如果它们不在数组中,则拒绝哈希内容

Sea*_*eal 1 ruby arrays hash

我有这个数组:

array = ["1", "2", "3", "4"]
Run Code Online (Sandbox Code Playgroud)

我有这个哈希数组:

ah = [
 {:id=>"1", :value=>"A"},
 {:id=>"2", :value=>"B"},
 {:id=>"3", :value=>"C"},
 {:id=>"4", :value=>"D"},
 {:id=>"5", :value=>"E"},
 {:id=>"6", :value=>"F"},
 {:id=>"7", :value=>"G"},
 {:id=>"8", :value=>"H"},
     ]
Run Code Online (Sandbox Code Playgroud)

我需要拒绝ah其id不在的任何哈希值array.

实现这一目标的最佳方法是什么?

tbr*_*ker 5

您可以array使用以下代码选择反向 - 其id为的哈希:

ah.select{|el| array.include?(el[:id])}
Run Code Online (Sandbox Code Playgroud)

如果您愿意reject,可以使用:

ah.reject{|el| !array.include?(el[:id])}
Run Code Online (Sandbox Code Playgroud)

有关更多信息:Array#reject,Array#select.这些方法创建一个新数组,如果要在适当位置修改使用Array#reject!或者数组#选择!.