Ruby:使用数组进行散列,如果值在数组中,则返回关联的键
刚接触Ruby,但已经没有想法了。我有一系列的书,我想1)上架2)找到它在哪个书架上3)如果找到了,从相关书架上移除它。为了简单起见,我有6本书。每个书架上有5本书Ruby:使用数组进行散列,如果值在数组中,则返回关联的键,ruby,hash,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_
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" }
获取对数组的引用,然后拒绝要删除的条目我尝试过这种方法,但不知道.keys.first返回了我需要的数据。快速跟进。现在我有了钥匙和书,有没有一种内置的方法可以将书1从书架1上取下?谢谢。我将把它添加到我的工具箱中,并通过一些路径找到它。