【问题标题】:Crop hash structure: Ruby on rails作物哈希结构:Ruby on rails
【发布时间】:2014-09-08 11:37:17
【问题描述】:

我想使用特定范围的值从哈希表中删除数据。

例子:

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}

注意从未消除结构中间的数据。

【问题讨论】:

    标签: ruby-on-rails ruby hash hashtable


    【解决方案1】:

    看看select method

    [6] pry(main)> hash.select { |k,v| array.include?(v) }
    => {:k=>10, :a=>30, :b=>40, :c=>50, :d=>80, :e=>60, :z=>100}
    

    【讨论】:

    • 如果我有重复的值怎么办?喜欢{50, 50, 30, 32}
    • 如果数组中有重复的值,它将正常工作,include? 在询问时仍然为真。如果散列中有重复的值,它们将被选中并保存在散列中。
    【解决方案2】:
    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}
    

    【讨论】:

      【解决方案3】:
      array.each_with_object({}){|e, h| h[hash.key(e)] = e if hash.value?(e)}
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-04-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-28
        • 2010-12-06
        • 2013-08-21
        相关资源
        最近更新 更多