我想使用特定范围的值从哈希表中删除数据。
示例:
hash = { t:1, y:9, k:10, a:30, b:40, c:50, d:80, e:60, z:100, l:3, n:9, f:20 }
给定一组数字:array = [10, 30, 40, 50, 80, 60, 100]
(恰好是表格中心的范围)
我希望结果是:
hash: {k:10, a:30, b:40, c:50, d:80, e:60, z:100}
注意,从未消除过在结构中间的数据。
答案 0 :(得分:7)
[6] pry(main)> hash.select { |k,v| array.include?(v) }
=> {:k=>10, :a=>30, :b=>40, :c=>50, :d=>80, :e=>60, :z=>100}
答案 1 :(得分:1)
results = {}
hash.each { |k, v| results[k] = v if array.include?(v) }
puts results
输出:
{:k=>10, :a=>30, :b=>40, :c=>50, :d=>80, :e=>60, :z=>100}
答案 2 :(得分:0)
array.each_with_object({}){|e, h| h[hash.key(e)] = e if hash.value?(e)}