Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby:使用数组进行散列,如果值在数组中,则返回关联的键_Ruby_Hash - Fatal编程技术网

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

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_

刚接触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" }

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

我尝试过这种方法,但不知道.keys.first返回了我需要的数据。快速跟进。现在我有了钥匙和书,有没有一种内置的方法可以将书1从书架1上取下?谢谢。我将把它添加到我的工具箱中,并通过一些路径找到它。