【问题标题】:Finding hashes with items from the array using ruby使用 ruby​​ 从数组中查找包含项目的哈希
【发布时间】:2012-08-08 14:07:04
【问题描述】:

对不起,因为我的错我没有检查项目的类别......

我有一个数组:

数组 = [link1、link2、link3、link4 等]

和 array_of_hashes 有两个项目:名称和链接

hash = [ :names, :links ] 例如
array_of_hashes = [{ :names => name1, :links => link1}, {:names = name2, :links => link2}, ... ]

我想对 array_of_hashes 中的每对项目做一些事情,其中​​包括来自数组的链接。

UPD:修改后的数据...抱歉造成误解。

【问题讨论】:

  • {:name, :link} 在我看来不像是一个有效的哈希值。我认为您的问题需要更多澄清。请更清楚地发布您的输入和预期输出。

标签: ruby arrays hash


【解决方案1】:

这是一个有点模糊的问题,但这里是一个镜头。

除非需要 :name,否则您将需要重新排序您尝试从哈希中访问的内容。

arr = ["link0", "link1",..."linkN"]
hsh = { "link0", item0, "link1", item1, "link1", item2,..."linkN", itemN}
hsh.each_pair | link, item |
  do_something_foo(item) if arr.include?(link) # do_something_foo is a predefined function
end

jagga99 写道

我想对包含数组链接的哈希中的每个项目做一些事情。非常感谢您的帮助。

如果 [:name, :link] 是 require 对,那么您需要确定要处理的项目是哪个部分:名称或链接。

【讨论】:

  • 我想继续使用链接数组中包含的每个链接的名称
【解决方案2】:

枚举哈希数组并搜索链接数组。

array = [:link1, :link2, :link3]
array_of_hashes = [{ :names => :name1, :links => :no_link}, {:names => :name2, :links => :link2}]

array_of_hashes.each do |hash|
  if array.any? {|s| s==hash[:links]}
    puts "Do something with #{hash[:names].to_s}"
  end
end

【讨论】:

    猜你喜欢
    • 2014-05-03
    • 1970-01-01
    • 2015-05-07
    • 1970-01-01
    • 1970-01-01
    • 2017-04-28
    • 2016-10-31
    • 2016-04-27
    • 2014-10-03
    相关资源
    最近更新 更多