Ruby:使用/ Arrays散列,如果值在数组中则返回关联键

时间:2014-09-04 23:38:48

标签: ruby hash

Ruby的新手,已经没有想法了。我有一系列书籍,我想1)搁置2)找到它所在的架子3)如果找到,将其从相关的架子中取出。为简洁起见,我有6本书。每个书架包含5本书。

library_catalog = [ "Book1", "Book2", "Book3", "Book4", "Book5", "Book6" ]
shelves = Hash.new(0)
catalog_slice = library_catalog.each_slice(5).to_a
count = 1

catalog_slice.each do | x |
shelves.merge!(count=>x)
count+=1
end

据此我知道有一个Hash w /数组

{1=>["Book1", "Book2", "Book3", "Book4", "Book5"], 2=>["Book6"]}

这是我在遍历散列以找到数组内的匹配并返回密钥(shelf)时遇到问题的地方。如果我有标题=" Book1"而我正在努力匹配并返回1,我将如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

我认为这应该有用。

shelves.select { |k,v| v.include?("Book1")}.keys.first

选择值等于您要查找的标题的哈希值(在本例中为“Book1”) 将这些哈希的键作为数组获取 获取数组中的第一个条目。

从书架上删除书籍试试这个:

key = shelves.select { |k,v| v.include?("Book1")}.keys.first
shelves[key].reject! { |b| b == "Book1" }

获取对数组的引用,然后拒绝您要删除的条目