Ruby:带数组的哈希,如果值在数组中,则返回关联键



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

从这里我知道有一个散列w/数组这样的

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

这就是我在遍历散列以在数组中找到匹配项并返回密钥(shelf)时遇到的问题。如果我有title="Book1",而我正试图匹配并返回1,我该如何处理?

我认为这应该有效。

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" }

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

最新更新